コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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()));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        public void Constructor_NullCache_ShouldThrowException()
        {
            var resourceActivityCache = new ResourceActivityCache(new ActivityParser(), null);

            Assert.IsNull(resourceActivityCache);
        }
コード例 #7
0
        public void Constructor_NullParser_ShouldThrowException()
        {
            var resourceActivityCache = new ResourceActivityCache(null, new System.Collections.Concurrent.ConcurrentDictionary <Guid, Dev2.IDev2Activity>());

            Assert.IsNull(resourceActivityCache);
        }