2019-03-28 15:47:41 +01:00
|
|
|
{ system ? builtins.currentSystem,
|
|
|
|
config ? {},
|
|
|
|
pkgs ? import ../.. { inherit system config; }
|
|
|
|
}:
|
|
|
|
|
|
|
|
with import ../lib/testing.nix { inherit system pkgs; };
|
|
|
|
with pkgs.lib;
|
2018-11-03 18:14:13 +01:00
|
|
|
|
2019-03-28 15:47:41 +01:00
|
|
|
let
|
|
|
|
solrTest = package: makeTest {
|
|
|
|
machine =
|
|
|
|
{ config, pkgs, ... }:
|
|
|
|
{
|
|
|
|
# Ensure the virtual machine has enough memory for Solr to avoid the following error:
|
|
|
|
#
|
|
|
|
# OpenJDK 64-Bit Server VM warning:
|
|
|
|
# INFO: os::commit_memory(0x00000000e8000000, 402653184, 0)
|
|
|
|
# failed; error='Cannot allocate memory' (errno=12)
|
|
|
|
#
|
|
|
|
# There is insufficient memory for the Java Runtime Environment to continue.
|
|
|
|
# Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory.
|
|
|
|
virtualisation.memorySize = 2000;
|
2018-11-03 18:14:13 +01:00
|
|
|
|
2019-03-28 15:47:41 +01:00
|
|
|
services.solr.enable = true;
|
|
|
|
services.solr.package = package;
|
|
|
|
};
|
2018-11-03 18:14:13 +01:00
|
|
|
|
2019-03-28 15:47:41 +01:00
|
|
|
testScript = ''
|
|
|
|
startAll;
|
2018-11-03 18:14:13 +01:00
|
|
|
|
2019-03-28 15:47:41 +01:00
|
|
|
$machine->waitForUnit('solr.service');
|
|
|
|
$machine->waitForOpenPort('8983');
|
|
|
|
$machine->succeed('curl --fail http://localhost:8983/solr/');
|
|
|
|
|
|
|
|
# adapted from pkgs.solr/examples/films/README.txt
|
|
|
|
$machine->succeed('sudo -u solr solr create -c films');
|
|
|
|
$machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{
|
|
|
|
"add-field" : {
|
|
|
|
"name":"name",
|
|
|
|
"type":"text_general",
|
|
|
|
"multiValued":false,
|
|
|
|
"stored":true
|
|
|
|
},
|
|
|
|
"add-field" : {
|
|
|
|
"name":"initial_release_date",
|
|
|
|
"type":"pdate",
|
|
|
|
"stored":true
|
|
|
|
}
|
|
|
|
}')) =~ /"status":0/ or die;
|
|
|
|
$machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json');
|
|
|
|
$machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die;
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
in
|
|
|
|
{
|
|
|
|
solr_7 = solrTest pkgs.solr_7 // {
|
|
|
|
name = "solr_7";
|
|
|
|
meta.maintainers = [ lib.maintainers.aanderse ];
|
|
|
|
};
|
2018-11-03 18:14:13 +01:00
|
|
|
|
2019-03-28 15:47:41 +01:00
|
|
|
solr_8 = solrTest pkgs.solr_8 // {
|
|
|
|
name = "solr_8";
|
|
|
|
meta.maintainers = [ lib.maintainers.aanderse ];
|
|
|
|
};
|
|
|
|
}
|