at 18.09-beta 2.8 kB view raw
1{ system ? builtins.currentSystem }: 2with import ../lib/testing.nix { inherit system; }; 3with pkgs.lib; 4 5let 6 makeKafkaTest = name: kafkaPackage: (makeTest { 7 inherit name; 8 meta = with pkgs.stdenv.lib.maintainers; { 9 maintainers = [ nequissimus ]; 10 }; 11 12 nodes = { 13 zookeeper1 = { ... }: { 14 services.zookeeper = { 15 enable = true; 16 }; 17 18 networking.firewall.allowedTCPPorts = [ 2181 ]; 19 virtualisation.memorySize = 1024; 20 }; 21 kafka = { ... }: { 22 services.apache-kafka = { 23 enable = true; 24 extraProperties = '' 25 offsets.topic.replication.factor = 1 26 zookeeper.session.timeout.ms = 600000 27 ''; 28 package = kafkaPackage; 29 zookeeper = "zookeeper1:2181"; 30 # These are the default options, but UseCompressedOops doesn't work with 32bit JVM 31 jvmOptions = [ 32 "-server" "-Xmx1G" "-Xms1G" "-XX:+UseParNewGC" "-XX:+UseConcMarkSweepGC" "-XX:+CMSClassUnloadingEnabled" 33 "-XX:+CMSScavengeBeforeRemark" "-XX:+DisableExplicitGC" "-Djava.awt.headless=true" "-Djava.net.preferIPv4Stack=true" 34 ] ++ optionals (! pkgs.stdenv.isi686 ) [ "-XX:+UseCompressedOops" ]; 35 }; 36 37 networking.firewall.allowedTCPPorts = [ 9092 ]; 38 # i686 tests: qemu-system-i386 can simulate max 2047MB RAM (not 2048) 39 virtualisation.memorySize = 2047; 40 }; 41 }; 42 43 testScript = '' 44 startAll; 45 46 $zookeeper1->waitForUnit("default.target"); 47 $zookeeper1->waitForUnit("zookeeper.service"); 48 $zookeeper1->waitForOpenPort(2181); 49 50 $kafka->waitForUnit("default.target"); 51 $kafka->waitForUnit("apache-kafka.service"); 52 $kafka->waitForOpenPort(9092); 53 54 $kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic"); 55 $kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic"); 56 '' + (if name == "kafka_0_9" then '' 57 $kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --zookeeper zookeeper1:2181 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'"); 58 '' else '' 59 $kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'"); 60 ''); 61 }); 62 63in with pkgs; { 64 kafka_0_9 = makeKafkaTest "kafka_0_9" apacheKafka_0_9; 65 kafka_0_10 = makeKafkaTest "kafka_0_10" apacheKafka_0_10; 66 kafka_0_11 = makeKafkaTest "kafka_0_11" apacheKafka_0_11; 67 kafka_1_0 = makeKafkaTest "kafka_1_0" apacheKafka_1_0; 68 kafka_1_1 = makeKafkaTest "kafka_1_1" apacheKafka_1_1; 69}