49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test.nix ({ pkgs, lib, ... } :
							 | 
						||
| 
								 | 
							
								let
							 | 
						||
| 
								 | 
							
								  kafkaPackage = pkgs.apacheKafka_0_11;
							 | 
						||
| 
								 | 
							
								in {
							 | 
						||
| 
								 | 
							
								  name = "kafka_0_11";
							 | 
						||
| 
								 | 
							
								  meta = with pkgs.stdenv.lib.maintainers; {
							 | 
						||
| 
								 | 
							
								    maintainers = [ nequissimus ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  nodes = {
							 | 
						||
| 
								 | 
							
								    zookeeper1 = { config, ... }: {
							 | 
						||
| 
								 | 
							
								      services.zookeeper = {
							 | 
						||
| 
								 | 
							
								        enable = true;
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      networking.firewall.allowedTCPPorts = [ 2181 ];
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    kafka = { config, ... }: {
							 | 
						||
| 
								 | 
							
								      services.apache-kafka = {
							 | 
						||
| 
								 | 
							
								        enable = true;
							 | 
						||
| 
								 | 
							
								        extraProperties = ''
							 | 
						||
| 
								 | 
							
								          offsets.topic.replication.factor = 1
							 | 
						||
| 
								 | 
							
								        '';
							 | 
						||
| 
								 | 
							
								        package = kafkaPackage;
							 | 
						||
| 
								 | 
							
								        zookeeper = "zookeeper1:2181";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      networking.firewall.allowedTCPPorts = [ 9092 ];
							 | 
						||
| 
								 | 
							
								      virtualisation.memorySize = 2048;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    startAll;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $zookeeper1->waitForUnit("zookeeper");
							 | 
						||
| 
								 | 
							
								    $zookeeper1->waitForUnit("network.target");
							 | 
						||
| 
								 | 
							
								    $zookeeper1->waitForOpenPort(2181);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $kafka->waitForUnit("apache-kafka");
							 | 
						||
| 
								 | 
							
								    $kafka->waitForUnit("network.target");
							 | 
						||
| 
								 | 
							
								    $kafka->waitForOpenPort(9092);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    $kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic");
							 | 
						||
| 
								 | 
							
								    $kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic");
							 | 
						||
| 
								 | 
							
								    $kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'");
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |