public void AddToActivityCache(IResource resource) { IResourceActivityCache parser = null; if (_parsers != null && !_parsers.TryGetValue(GlobalConstants.ServerWorkspaceID, out parser)) { parser = new ResourceActivityCache(CustomContainer.Get <IActivityParser>(), new ConcurrentDictionary <Guid, IDev2Activity>()); _parsers.AddOrUpdate(GlobalConstants.ServerWorkspaceID, parser, (key, cache) => { if (_parsers.TryGetValue(key, out IResourceActivityCache existingCache)) { return(existingCache); } return(cache); }); } if (parser != null && !parser.HasActivityInCache(resource.ResourceID)) { var service = GetService(GlobalConstants.ServerWorkspaceID, resource.ResourceID, resource.ResourceName); if (service != null) { var sa = service.Actions.FirstOrDefault(); MapServiceActionDependencies(GlobalConstants.ServerWorkspaceID, sa); ServiceActionRepo.Instance.AddToCache(resource.ResourceID, service); var activity = GetActivity(sa); parser.Parse(activity, resource.ResourceID); } } }
public IDev2Activity Parse(Guid workspaceID, Guid resourceID) { IResourceActivityCache parser = null; Dev2Logger.Debug($"Fetching Execution Plan for {resourceID} for workspace {workspaceID}"); if (_parsers != null && !_parsers.TryGetValue(workspaceID, out parser)) { parser = new ResourceActivityCache(CustomContainer.Get <IActivityParser>(), new ConcurrentDictionary <Guid, IDev2Activity>()); _parsers.Add(workspaceID, parser); } if (parser != null && parser.HasActivityInCache(resourceID)) { var dev2Activity = parser.GetActivity(resourceID); if (dev2Activity != null) { return(dev2Activity); } } var resource = GetResource(workspaceID, resourceID); var service = GetService(workspaceID, resourceID, resource.ResourceName); if (service != null) { var sa = service.Actions.FirstOrDefault(); MapServiceActionDependencies(workspaceID, sa); ServiceActionRepo.Instance.AddToCache(resourceID, service); var activity = GetActivity(sa); if (parser != null) { return(parser.Parse(activity, resourceID)); } } return(null); }
public void HasInCache_WhenNotInCache_ShouldReturnFalse() { var parser = new Mock <IActivityParser>(); parser.Setup(a => a.Parse(It.IsAny <DynamicActivity>())).Returns(new Mock <IDev2Activity>().Object); var resourceActivityCache = new ResourceActivityCache(parser.Object, new System.Collections.Concurrent.ConcurrentDictionary <Guid, Dev2.IDev2Activity>()); var resourceId = Guid.NewGuid(); resourceActivityCache.Parse(new DynamicActivity(), resourceId); Assert.IsFalse(resourceActivityCache.HasActivityInCache(Guid.NewGuid())); }
public void Parse_WhenNotInCache_ShouldAdd() { var parser = new Mock <IActivityParser>(); parser.Setup(a => a.Parse(It.IsAny <DynamicActivity>())).Returns(new Mock <IDev2Activity>().Object); var resourceActivityCache = new ResourceActivityCache(parser.Object, new System.Collections.Concurrent.ConcurrentDictionary <Guid, Dev2.IDev2Activity>()); var resourceId = Guid.NewGuid(); resourceActivityCache.Parse(new DynamicActivity(), resourceId); Assert.IsNotNull(resourceActivityCache); Assert.AreEqual(1, resourceActivityCache.Cache.Count); Assert.IsTrue(resourceActivityCache.Cache.ContainsKey(resourceId)); }
public IDev2Activity Parse(Guid workspaceID, Guid resourceID, string executionId) { IResourceActivityCache parser = null; Dev2Logger.Debug($"Fetching Execution Plan for {resourceID} for workspace {workspaceID}", string.IsNullOrEmpty(executionId) ? GlobalConstants.WarewolfDebug : executionId); if (_parsers != null && !_parsers.TryGetValue(workspaceID, out parser)) { parser = new ResourceActivityCache(CustomContainer.Get <IActivityParser>(), new ConcurrentDictionary <Guid, IDev2Activity>()); _parsers.AddOrUpdate(workspaceID, parser, (key, cache) => { if (_parsers.TryGetValue(key, out IResourceActivityCache existingCache)) { return(existingCache); } return(cache); }); } if (parser != null && parser.HasActivityInCache(resourceID)) { var dev2Activity = parser.GetActivity(resourceID); if (dev2Activity != null) { return(dev2Activity); } } var resource = GetResource(workspaceID, resourceID); var service = GetService(workspaceID, resourceID, resource.ResourceName); if (service != null) { var sa = service.Actions.FirstOrDefault(); MapServiceActionDependencies(workspaceID, sa); ServiceActionRepo.Instance.AddToCache(resourceID, service); var activity = GetActivity(sa); if (parser != null) { return(parser.Parse(activity, resourceID)); } } return(null); }
public void Constructor_NullCache_ShouldThrowException() { var resourceActivityCache = new ResourceActivityCache(new ActivityParser(), null); Assert.IsNull(resourceActivityCache); }
public void Constructor_NullParser_ShouldThrowException() { var resourceActivityCache = new ResourceActivityCache(null, new System.Collections.Concurrent.ConcurrentDictionary <Guid, Dev2.IDev2Activity>()); Assert.IsNull(resourceActivityCache); }