nixVersions.stable: 2.15 -> 2.17
[NixPkgs.git] / nixos / tests / mongodb.nix
blob75b0c4c2ab2b1e7c83df5bd5896ec66c094c5f45
1 # This test start mongodb, runs a query using mongo shell
3 import ./make-test-python.nix ({ pkgs, ... }:
4   let
5     testQuery = pkgs.writeScript "nixtest.js" ''
6       db.greetings.insert({ "greeting": "hello" });
7       print(db.greetings.findOne().greeting);
8     '';
10     runMongoDBTest = pkg: ''
11       node.execute("(rm -rf data || true) && mkdir data")
12       node.execute(
13           "${pkg}/bin/mongod --fork --logpath logs --dbpath data"
14       )
15       node.wait_for_open_port(27017)
17       assert "hello" in node.succeed(
18           "${pkg}/bin/mongo ${testQuery}"
19       )
21       node.execute(
22           "${pkg}/bin/mongod --shutdown --dbpath data"
23       )
24       node.wait_for_closed_port(27017)
25     '';
27   in {
28     name = "mongodb";
29     meta = with pkgs.lib.maintainers; {
30       maintainers = [ bluescreen303 offline cstrahan rvl phile314 ];
31     };
33     nodes = {
34       node = {...}: {
35         environment.systemPackages = with pkgs; [
36           mongodb-4_4
37           mongodb-5_0
38         ];
39       };
40     };
42     testScript = ''
43       node.start()
44     ''
45       + runMongoDBTest pkgs.mongodb-4_4
46       + runMongoDBTest pkgs.mongodb-5_0
47       + ''
48         node.shutdown()
49       '';
50   })