private static async Task RunTestWithLoadedConfig(ILogger sublogger, string ConfigDir)
        {
            Version       v            = Assembly.GetExecutingAssembly().GetName().Version;
            DirectoryInfo appDir       = Directory.GetParent(Assembly.GetEntryAssembly().Location);
            DirectoryInfo appParentDir = new DirectoryInfo(appDir.Parent.FullName);
            DirectoryInfo appLogDir    = new DirectoryInfo($"{appParentDir.FullName}{Path.DirectorySeparatorChar}logs");


            string rootPath                 = ConfigDir; //$"{Environment.GetFolderPath(Environment.SpecialFolder.Desktop)}{Path.DirectorySeparatorChar}";
            string repositoryConfigPath     = $"{rootPath}{Path.DirectorySeparatorChar}repository.xml.config";
            string machineSubscriptionsPath = $"{rootPath}{Path.DirectorySeparatorChar}machines.xml.config";


            var configMananger = new RepositoryFactory().LoadFrom(repositoryConfigPath);

            var influxServerAddress = new Uri($"http://{configMananger.Config.DatabaseIPaddress}:{configMananger.Config.DatabasePort}");

            var ping = new Ping();

            var reply = ping.Send(influxServerAddress.Host);

            if (reply.Status != IPStatus.Success)
            {
                sublogger.Fatal("Ping to Database Server Failed. Exiting...");
                return;
            }

            var repo = new MachineRepository(configMananger.Config.DatabaseIPaddress, databaseName: configMananger.Config.DatabaseName, port: Convert.ToInt32(configMananger.Config.DatabasePort));

            if (!repo.CanConnect())
            {
                sublogger.Fatal("Can't Connect to DB Server. Exiting...");
                return;
            }

            var _pressWriterInflux = new RepositoryWriterPressInflux(repo, sublogger);

            var _messageProcessor = new MessageProcessor(sublogger);

            var machines = new CollectorManagerFactory().LoadFromFile(machineSubscriptionsPath).WithRepoWriter(_pressWriterInflux).WithLogger(sublogger).Build();

            var topicHandlers = new TopicHandlerFactory().AddMachines(machines).Build();

            _messageProcessor.AddMachineTopicHandlers(topicHandlers);

            var _collector = new MQTTCollector(_messageProcessor, sublogger);

            Console.WriteLine("Starting Collection");

            _collector.Start();

            _messageProcessor.StartProcessing();

            Console.WriteLine("Waiting indefinitely");
            await _collector.WaitUntilStoppedAsync();
        }