private async Task CreateAndRunWatcher <TData>(string testName, string filter, IConfiguration config, Func <List <IEnvelope>, Task> testBody, IRecordParser <TData, LogContext> recordParser, ILogger logger)
        {
            //Create a distinct directory based on testName so that tests can run in parallel
            string testDir = Path.Combine(TestUtility.GetTestHome(), testName);

            //The following will creates all directories and subdirectories in the specified path unless they already exist.
            Directory.CreateDirectory(testDir);

            //Clean up before the test rather than after so that we can inspect the files
            DeleteFiles(testDir, "*.*");

            ListEventSink logRecords = new ListEventSink();

            DirectorySource <TData, LogContext> watcher = new DirectorySource <TData, LogContext>
                                                              (testDir, filter, 1000, new PluginContext(config, logger, null), recordParser);

            watcher.Subscribe(logRecords);
            watcher.Start();

            await testBody(logRecords);

            watcher.Stop();
        }
示例#2
0
        public void TestDirectorySourceMetricsOnSubscribe()
        {
            IConfiguration config = GetConfig("directorySourceTest");
            string         id     = config[ConfigConstants.ID];

            MemoryLogger            logger  = new MemoryLogger(null);
            KinesisTapMetricsSource metrics = new KinesisTapMetricsSource(new PluginContext(null, null, null, null, null));

            DirectorySource <string, LogContext> source = new DirectorySource <string, LogContext>(
                TestUtility.GetTestHome(),
                "*.*",
                1000,
                new PluginContext(config, logger, metrics),
                new SingeLineRecordParser());

            MockMetricsSink metricsSink = new MockMetricsSink(3600, new PluginContext(config, logger, metrics));

            source.Start();
            metrics.Subscribe(metricsSink);
            metricsSink.Stop();
            source.Stop();
            Assert.Equal(2, metricsSink.AccumlatedValues.Count);
            Assert.Equal(0, TestUtility.GetMetricsCount(metricsSink.AccumlatedValues));
        }