public bfgWorker(string name, string route, string[] tags, IAppServiceRegistry registry, IAppServiceDiscovery services, IZipService zipService, IAppStatusServiceClient appStatus, IRxnManager <IRxn> rxnManager, IUpdateServiceClient updateService, IAppStatusCfg cfg, Func <ITestArena[]> arena) { _registry = registry; _services = services; _zipService = zipService; _appStatus = appStatus; _rxnManager = rxnManager; _updateService = updateService; _cfg = cfg; _arena = arena; Name = name; Route = route; Info.Add(bfgTagWorkflow.WorkerTag, tags.ToStringEach()); }
//to load a range of tests with dotnet test i cant use filters //will need to discover_tests in the dll first, parse the list of tests and divide them up //and stitch a list together public static IObservable <ApiHeartbeat> DiscoverWork(IAppServiceDiscovery services, string apiName = null) { return(services.Discover() .Where(msg => msg.Name.Contains("bfg-worker-queue") && (apiName.IsNullOrWhitespace() || msg.Name.BasicallyContains(apiName))) .Select(m => { var tokens = m.Name.Split(':'); m.Name = tokens.Reverse().Skip(1).FirstOrDefault(); return m; }) .Do(msg => { $"Discovered target {msg.Name} @ {msg.Url}".LogDebug(); })); }
public static string ClientId = bfgCfg.Detect().Id.Split('-').FirstOrDefault(); //get from cfg file if exists public bfgWorkerManager(bfgCluster workerCluster, IObservable <StartUnitTest[]> cfg, SystemStatusPublisher systemStatus, IResolveTypes resolver, IRxnManager <IRxn> eventManager, IAppStatusCfg appStatusCfg, IAppServiceRegistry appServiceRegistry, IZipService zipService, IAppStatusStore appCmds, IAppStatusServiceClient appStatus, IAppServiceDiscovery serviceDiscovery, IUpdateServiceClient appUpdates) { _workerCluster = workerCluster; _cfg = cfg; _resolver = resolver; _eventManager = eventManager; _appStatusCfg = appStatusCfg; _appServiceRegistry = appServiceRegistry; _zipService = zipService; _appCmds = appCmds; _appStatus = appStatus; _serviceDiscovery = serviceDiscovery; _appUpdates = appUpdates; systemStatus.Process(new AppStatusInfoProviderEvent() { ReporterName = nameof(bfgWorkerManager), Component = "Status", Info = WorkerManagerStatus }).Until(); }
public static IDisposable AdvertiseForWorkers(IAppServiceDiscovery discovery, string apiName = null, string hostUrl = "http://localhost:888/") { return(discovery.Advertise("bfg-worker-queue", apiName, hostUrl).Until()); }
public static IDisposable StartTestArena(string[] args, IObservable <StartUnitTest[]> testCfg, bfgCluster cluster, bfgWorkerManager workerManager, IRxnManager <IRxn> toFireOn, IAppServiceDiscovery discovery) { "Starting up TestArena".LogDebug(); if (_started.HasValue) { _started = DateTime.Now; } var stopAdvertising = bfgTestArenaApi.AdvertiseForWorkers(discovery, "all", $"http://{RxnApp.GetIpAddress()}:888"); theBfg.Use(cluster, workerManager); var stopWorkers = Disposable.Empty; if (args.Any(a => a.BasicallyEquals("fire"))) { stopWorkers = theBfg.StartTestArenaWorkers(args, testCfg).Until(); } var stopFiring = StartFiringWorkflow(args, testCfg, toFireOn); return(new CompositeDisposable(stopAdvertising, stopWorkers, stopFiring)); }