about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/elasticmq-server-bin
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-09-08 17:57:14 +0000
committerAlyssa Ross <hi@alyssa.is>2021-09-13 11:31:47 +0000
commitee7984efa14902a2ddd820c937457667a4f40c6a (patch)
treec9c1d046733cefe5e21fdd8a52104175d47b2443 /nixpkgs/pkgs/servers/elasticmq-server-bin
parentffc9d4ba381da62fd08b361bacd1e71e2a3d934d (diff)
parentb3c692172e5b5241b028a98e1977f9fb12eeaf42 (diff)
downloadnixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.gz
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.bz2
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.lz
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.xz
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.tar.zst
nixlib-ee7984efa14902a2ddd820c937457667a4f40c6a.zip
Merge commit 'b3c692172e5b5241b028a98e1977f9fb12eeaf42'
Diffstat (limited to 'nixpkgs/pkgs/servers/elasticmq-server-bin')
-rw-r--r--nixpkgs/pkgs/servers/elasticmq-server-bin/default.nix56
-rw-r--r--nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix47
2 files changed, 78 insertions, 25 deletions
diff --git a/nixpkgs/pkgs/servers/elasticmq-server-bin/default.nix b/nixpkgs/pkgs/servers/elasticmq-server-bin/default.nix
index c10ea7dd1806..bc599ebbc2c8 100644
--- a/nixpkgs/pkgs/servers/elasticmq-server-bin/default.nix
+++ b/nixpkgs/pkgs/servers/elasticmq-server-bin/default.nix
@@ -1,34 +1,40 @@
-{ lib, stdenv, fetchurl, jdk, jre, makeWrapper }:
+{ lib, stdenv, fetchurl, jdk, jre, makeWrapper, runCommand, python3Packages, writeText }:
 
-stdenv.mkDerivation rec {
-  pname = "elasticmq-server";
-  version = "0.14.6";
+let
+  elasticmq-server = stdenv.mkDerivation rec {
+    pname = "elasticmq-server";
+    version = "1.2.0";
 
-  src = fetchurl {
-    url = "https://s3-eu-west-1.amazonaws.com/softwaremill-public/${pname}-${version}.jar";
-    sha256 = "1cp2pmkc6gx7gr6109jlcphlky5rr6s1wj528r6hyhzdc01sjhhz";
-  };
+    src = fetchurl {
+      url = "https://s3-eu-west-1.amazonaws.com/softwaremill-public/${pname}-${version}.jar";
+      sha256 = "06bn5ixz0pvvhfvavr6njv8c2i9pgd6gj32wnp2f0fn0z1kypn1f";
+    };
 
-  # don't do anything?
-  unpackPhase = "${jdk}/bin/jar xf $src favicon.png";
+    # don't do anything?
+    unpackPhase = "${jdk}/bin/jar xf $src favicon.png";
 
-  nativeBuildInputs = [ makeWrapper ];
+    nativeBuildInputs = [ makeWrapper ];
 
-  installPhase = ''
-    mkdir -p $out/bin $out/share/elasticmq-server
+    installPhase = ''
+      mkdir -p $out/bin $out/share/elasticmq-server
 
-    cp $src $out/share/elasticmq-server/elasticmq-server.jar
+      cp $src $out/share/elasticmq-server/elasticmq-server.jar
 
-    # TODO: how to add extraArgs? current workaround is to use JAVA_TOOL_OPTIONS environment to specify properties
-    makeWrapper ${jre}/bin/java $out/bin/elasticmq-server \
-      --add-flags "-jar $out/share/elasticmq-server/elasticmq-server.jar"
-  '';
+      # TODO: how to add extraArgs? current workaround is to use JAVA_TOOL_OPTIONS environment to specify properties
+      makeWrapper ${jre}/bin/java $out/bin/elasticmq-server \
+        --add-flags "-jar $out/share/elasticmq-server/elasticmq-server.jar"
+    '';
 
-  meta = with lib; {
-    homepage = "https://github.com/softwaremill/elasticmq";
-    description = "Message queueing system with Java, Scala and Amazon SQS-compatible interfaces";
-    license = licenses.asl20;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ peterromfeldhk ];
+    meta = with lib; {
+      homepage = "https://github.com/softwaremill/elasticmq";
+      description = "Message queueing system with Java, Scala and Amazon SQS-compatible interfaces";
+      license = licenses.asl20;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ peterromfeldhk ];
+    };
+  };
+in elasticmq-server.overrideAttrs (_: {
+  passthru.tests.elasticmqTest = import ./elasticmq-test.nix {
+    inherit elasticmq-server runCommand python3Packages writeText;
   };
-}
+})
diff --git a/nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix b/nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix
new file mode 100644
index 000000000000..044b74508982
--- /dev/null
+++ b/nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix
@@ -0,0 +1,47 @@
+{ elasticmq-server, python3Packages, runCommand, writeText}:
+
+runCommand "${elasticmq-server.name}-tests" (let
+  commonPy = ''
+    import boto3
+    client = boto3.resource(
+      "sqs",
+      endpoint_url="http://localhost:9324",
+      region_name="elasticmq",
+      aws_secret_access_key="x",
+      aws_access_key_id="x",
+      use_ssl=False,
+    )
+    queue = client.get_queue_by_name(QueueName="foobar")
+  '';
+in {
+  buildInputs = with python3Packages; [ python boto3 ];
+  emqConfig = writeText "emq-test.conf" ''
+    generate-node-address = true
+
+    queues {
+      foobar {}
+    }
+  '';
+  putMessagePy = writeText "put_message.py" ''
+    ${commonPy}
+    queue.send_message(MessageBody="bazqux")
+  '';
+  checkMessagePy = writeText "check_message.py" ''
+    ${commonPy}
+    messages = queue.receive_messages()
+    print(f"Received {messages!r}")
+    assert len(messages) == 1
+    assert messages[0].body == "bazqux"
+  '';
+}) ''
+  JAVA_TOOL_OPTIONS="-Dconfig.file=$emqConfig" ${elasticmq-server}/bin/elasticmq-server &
+  SERVER_PID=$!
+  sleep 10
+
+  python $putMessagePy
+  python $checkMessagePy
+  touch $out
+
+  # needed on darwin
+  kill $SERVER_PID
+''