static void Main(string[] args) { if (args.Length <= 0) { Console.WriteLine("usage: ./VeracityTest <input file path> <time to run (ms)> <delay between producer writes (ms)>"); Console.ReadLine(); return; } FileInfo inputFile = new FileInfo(args[0]); if (!inputFile.Exists) { Console.WriteLine($"File {inputFile.FullName} doesn't exist!"); Console.ReadLine(); return; } Console.WriteLine("control+c to quit early"); int runLength = 10000; int delay = 500; if (args.Length > 1 && int.TryParse(args[1], out int val)) { runLength = val; } if (args.Length > 2 && int.TryParse(args[2], out int val2)) { delay = val2; } IDataQueue dataQueue = new DataQueue(); IProducer producer = new FileProducer(dataQueue, inputFile); IConsumer consoleConsumer = new ConsoleConsumer(dataQueue); IConsumer fileConsumer = new FileConsumer(dataQueue, new FileInfo(@".\output.txt")); dataQueue.RegisterListener(ConsumerType.CONSOLE, consoleConsumer); dataQueue.RegisterListener(ConsumerType.FILE, fileConsumer); producer.StartProducer(delay); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); while (stopWatch.ElapsedMilliseconds < runLength) { Thread.Sleep(500); } stopWatch.Stop(); producer.StopProducer(); }
public void CheckDataQueueDequeueTypeCorrect() { IDataQueue dataQueue = new DataQueue(); var consumer = new Mock <IConsumer>(); ConsumerType inType = ConsumerType.CONSOLE; ConsumerType outType = ConsumerType.FILE; consumer.Setup(c => c.OnItemAdded()).Callback(() => outType = dataQueue.GetNextItem(inType).ConsumerType); dataQueue.RegisterListener(inType, consumer.Object); dataQueue.AddItem(new DataItem(inType, "DUMMY")); Assert.That(inType.Equals(outType), $"Expected type to be {inType} but was {outType}"); }
public void CheckDataQueueInputCountMatchesOutputCount() { IDataQueue dataQueue = new DataQueue(); var consumer = new Mock <IConsumer>(); int inCount = 10; int outCount = 0; consumer.Setup(c => c.OnItemAdded()).Callback(() => outCount++); dataQueue.RegisterListener(ConsumerType.CONSOLE, consumer.Object); for (int i = 0; i < inCount; i++) { dataQueue.AddItem(new DataItem(ConsumerType.CONSOLE, "")); } Assert.That(inCount.Equals(outCount), $"Expected outCount to be {inCount} but was {outCount}"); }