about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix')
-rw-r--r--nixpkgs/pkgs/servers/elasticmq-server-bin/elasticmq-test.nix47
1 files changed, 47 insertions, 0 deletions
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
+''