using System; using System.Threading.Tasks; using franz; using NUnit.Framework; namespace franz.tests { [TestFixture] public class Tests { Telefranz f1; Telefranz f2; [SetUp] public void Setup() { f1 = new Telefranz("libfranztest1", "focalor:9092", "/usr/lib/librdkafka.so"); f2 = new Telefranz("libfranztest2", "focalor:9092", "/usr/lib/librdkafka.so"); } [Test] public void reportsToSoundoff() { var f1Reported = false; var f2Reported = false; f1.addHandler((silver_messages.global.report r) => { switch(r.name) { case "libfranztest1": { f1Reported = true; TestContext.Out.WriteLine("f1 reported"); break; } case "libfranztest2": { f2Reported = true; TestContext.Out.WriteLine("f2 reported"); break; } } }); f1.StartListening(); f2.StartListening(); f1.ProduceMessage(new silver_messages.global.sound_off()); Task.WaitAny( Task.Run(async () => { while(f1Reported == false || f2Reported == false) { //TestContext.Out.WriteLine("not ready, giving another 100ms"); await Task.Delay(100); } //TestContext.Out.WriteLine("done, ready, green"); }), Task.Run(async () => { await Task.Delay(10000); TestContext.Out.WriteLine("time up"); Assert.Fail(); }) ); } } }