예제 #1
0
        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();
        }
예제 #2
0
        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}");
        }
예제 #3
0
        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}");
        }