public void DuplicateLinkNameDifferentRoleTest()
        {
            string name = "DuplicateLinkNameDifferentRoleTest";

            this.linkProcessor = new TestLinkProcessor();
            this.host.RegisterLinkProcessor(this.linkProcessor);

            string linkName   = "same-link-for-different-role";
            var    connection = new Connection(Address);
            var    session1   = new Session(connection);
            var    sender     = new SenderLink(session1, linkName, name);

            sender.Send(new Message("msg1"), SendTimeout);

            var session2 = new Session(connection);
            var receiver = new ReceiverLink(session2, linkName, name);

            receiver.SetCredit(2, false);
            var message = receiver.Receive();

            Assert.IsTrue(message != null, "No message was received");
            receiver.Accept(message);

            connection.Close();
        }
        public void ContainerHostTargetLinkEndpointTest()
        {
            string         name     = "ContainerHostTargetLinkEndpointTest";
            List <Message> messages = new List <Message>();

            this.linkProcessor = new TestLinkProcessor(
                link => new TargetLinkEndpoint(new TestMessageProcessor(50, messages), link));
            this.host.RegisterLinkProcessor(this.linkProcessor);

            int count      = 190;
            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, "send-link", "any");

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();

            Assert.AreEqual(count, messages.Count);
        }
        public void ContainerHostLinkProcessorTest()
        {
            string name = "ContainerHostLinkProcessorTest";

            this.host.RegisterLinkProcessor(this.linkProcessor = new TestLinkProcessor());

            int count      = 80;
            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, "send-link", "any");

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();
        }
 public void TestCleanup()
 {
     if (this.linkProcessor != null)
     {
         this.host.UnregisterLinkProcessor(this.linkProcessor);
         this.linkProcessor = null;
     }
 }
 public void TestCleanup()
 {
     if (this.linkProcessor != null)
     {
         this.host.UnregisterLinkProcessor(this.linkProcessor);
         this.linkProcessor = null;
     }
 }
Example #6
0
        /// <summary>
        /// Registers a link processor to handle received attach performatives.
        /// </summary>
        /// <param name="linkProcessor">The link processor to be registered.</param>
        public void RegisterLinkProcessor(ILinkProcessor linkProcessor)
        {
            if (this.linkProcessor != null)
            {
                throw new AmqpException(ErrorCode.NotAllowed, this.linkProcessor.GetType().Name + " already registered");
            }

            this.linkProcessor = linkProcessor;
        }
Example #7
0
        /// <summary>
        /// Unregisters a link processor that was previously registered.
        /// </summary>
        /// <param name="linkProcessor">The link processor to unregister.</param>
        /// <remarks>If the linkProcessor was not registered or is different
        /// from the current registered one, an exception is thrown.</remarks>
        public void UnregisterLinkProcessor(ILinkProcessor linkProcessor)
        {
            if (this.linkProcessor != linkProcessor)
            {
                throw new AmqpException(ErrorCode.NotAllowed, "The provided linkProcessor was not registered");
            }

            this.linkProcessor = null;
        }
Example #8
0
        public static Task <Session> OpenAndLinkEndpointAsync(LinkEndpoint endpoint)
        {
            ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>();

            fakeLinkProcessor
            .When(instance => instance.Process(Arg.Any <AttachContext>()))
            .Do(call => call.Arg <AttachContext>().Complete(endpoint, 3));

            return(OpenAndLinkProcessorAsync(fakeLinkProcessor));
        }
Example #9
0
 public ActivityService(ICepRepository repository,
                        IActivityProcessor processor,
                        ILinkProcessor linkProcessor,
                        IGraphProcessor graphProcessor)
 {
     _repository        = repository;
     _activityProcessor = processor;
     _linkProcessor     = linkProcessor;
     _graphProcessor    = graphProcessor;
 }
        public void ContainerHostSourceLinkEndpointTest()
        {
            string          name     = "ContainerHostSourceLinkEndpointTest";
            int             count    = 100;
            Queue <Message> messages = new Queue <Message>();

            for (int i = 0; i < count; i++)
            {
                messages.Enqueue(new Message("test")
                {
                    Properties = new Properties()
                    {
                        MessageId = name + i
                    }
                });
            }

            var source = new TestMessageSource(messages);

            this.linkProcessor = new TestLinkProcessor(link => new SourceLinkEndpoint(source, link));
            this.host.RegisterLinkProcessor(this.linkProcessor);

            var connection = new Connection(Address);
            var session    = new Session(connection);
            var receiver   = new ReceiverLink(session, "receiver0", name);
            int released   = 0;
            int rejected   = 0;

            for (int i = 1; i <= count; i++)
            {
                Message message = receiver.Receive();
                if (i % 5 == 0)
                {
                    receiver.Reject(message);
                    rejected++;
                }
                else if (i % 17 == 0)
                {
                    receiver.Release(message);
                    released++;
                }
                else
                {
                    receiver.Accept(message);
                }
            }

            receiver.Close();
            session.Close();
            connection.Close();

            Thread.Sleep(200);
            Assert.AreEqual(released, messages.Count);
            Assert.AreEqual(rejected, source.DeadletterMessage.Count);
        }
Example #11
0
        public static async Task <Session> OpenAndLinkProcessorAsync(ILinkProcessor linkProcessor)
        {
            ContainerHost host = Open();

            host.RegisterLinkProcessor(linkProcessor);
            Connection connection = await host.ConnectAsync();

            var session = new Session(connection);

            session.AddClosedCallback((_, __) => host.Close());
            return(session);
        }
        public void ContainerHostProcessorOrderTest()
        {
            string         name     = "ContainerHostProcessorOrderTest";
            List <Message> messages = new List <Message>();

            this.host.RegisterMessageProcessor(name, new TestMessageProcessor(50, messages));
            this.linkProcessor = new TestLinkProcessor();
            this.host.RegisterLinkProcessor(this.linkProcessor);

            int count      = 80;
            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, "send-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, SendTimeout);
            }

            sender.Close();

            this.host.RegisterMessageSource(name, new TestMessageSource(new Queue <Message>(messages)));
            var receiver = new ReceiverLink(session, "recv-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = receiver.Receive();
                receiver.Accept(message);
            }

            receiver.Close();

            sender = new SenderLink(session, "send-link", "any");
            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();
        }
Example #13
0
        public async Task IsAuthorized_ReturnsFalse_WhenSessionConnectionClosedBeforeAuthorized()
        {
            ListenerLink   link              = null;
            var            authorized        = false;
            ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>();

            fakeLinkProcessor
            .When(instance => instance.Process(Arg.Any <AttachContext>()))
            .Do(c =>
            {
                AttachContext attachContext = c.ArgAt <AttachContext>(0);
                link = attachContext.Link;
                attachContext.Complete(new Error(ErrorCode.IllegalState)
                {
                    Description = "Test"
                });
            });

            ContainerHost host = TestAmqpHost.Open();

            try
            {
                host.RegisterLinkProcessor(fakeLinkProcessor);
                Connection connection = await host.ConnectAndAttachAsync();

                await connection.CloseAsync();

                await Task.Delay(500);

                var securityContext = new SecurityContext();
                securityContext.Authorize(link.Session.Connection);

                authorized = securityContext.IsAuthorized(link.Session.Connection);
            }
            finally
            {
                host.Close();
            }

            authorized.ShouldBeFalse();
        }
Example #14
0
        public void Initialize(string url, IEnumerable <AssetModel> assets, IEnumerable <string> blacklistedExtensions, bool usesRobotsTxt = true)
        {
            _defaultUri    = UrlHelper.CreatUri(url);
            _masterDomain  = UrlHelper.GetDomain(_defaultUri);
            _absolutePath  = Regex.Match(_defaultUri.AbsoluteUri, RegexExpression.GET_BASE_URL).Value;
            _linkProcessor = new LinkProcessor(_robots, _processedList, _toProcessList, _masterDomain, _absolutePath);

            if (usesRobotsTxt)
            {
                _robots = _setupManager.ReadRobotsTxt(_absolutePath);
            }
            _htmlProcessor.AssetList             = assets;
            _htmlProcessor.BlacklistedExtensions = blacklistedExtensions;

            if (_robots.IsPathAllowed(Crawler.USER_AGENT, _defaultUri.AbsolutePath))
            {
                _toProcessList.Push(_defaultUri.AbsoluteUri);
            }

            IsInitialized = true;
        }
Example #15
0
        // processing objects

        /**
         * Adds a link to the current paragraph.
         * @since 5.0.6
         */
        public void ProcessLink()
        {
            if (currentParagraph == null)
            {
                currentParagraph = new Paragraph();
            }
            // The link provider allows you to do additional processing
            ILinkProcessor i = null;

            if (providers.ContainsKey(LINK_PROVIDER))
            {
                i = (ILinkProcessor)providers[LINK_PROVIDER];
            }
            if (i == null || !i.Process(currentParagraph, chain))
            {
                // sets an Anchor for all the Chunks in the current paragraph
                String href = chain[HtmlTags.HREF];
                if (href != null)
                {
                    foreach (Chunk ck in currentParagraph.Chunks)
                    {
                        ck.SetAnchor(href);
                    }
                }
            }
            // a link should be added to the current paragraph as a phrase
            if (stack.Count == 0)
            {
                // no paragraph to add too, 'a' tag is first element
                Paragraph tmp = new Paragraph(new Phrase(currentParagraph));
                currentParagraph = tmp;
            }
            else
            {
                Paragraph tmp = (Paragraph)stack.Pop();
                tmp.Add(new Phrase(currentParagraph));
                currentParagraph = tmp;
            }
        }
        public void ContainerHostPlainPrincipalTest()
        {
            string       name          = "ContainerHostPlainPrincipalTest";
            ListenerLink link          = null;
            var          linkProcessor = new TestLinkProcessor();

            linkProcessor.OnLinkAttached += a => link = a;
            this.host.RegisterLinkProcessor(this.linkProcessor = linkProcessor);

            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, name, name);

            sender.Send(new Message("msg1"), SendTimeout);
            connection.Close();

            Assert.IsTrue(link != null, "link is null");
            var listenerConnection = (ListenerConnection)link.Session.Connection;

            Assert.IsTrue(listenerConnection.Principal != null, "principal is null");
            Assert.IsTrue(listenerConnection.Principal.Identity.AuthenticationType == "PLAIN", "wrong auth type");
        }
Example #17
0
        public async Task IsAuthorized_ReturnsTrue_WhenSameConnectionAuthorizedTwice()
        {
            var            authorized        = false;
            var            links             = new List <ListenerLink>();
            ILinkProcessor fakeLinkProcessor = Substitute.For <ILinkProcessor>();

            fakeLinkProcessor
            .When(instance => instance.Process(Arg.Any <AttachContext>()))
            .Do(c =>
            {
                AttachContext attachContext = c.ArgAt <AttachContext>(0);
                links.Add(attachContext.Link);
                attachContext.Complete(new Error(ErrorCode.IllegalState)
                {
                    Description = "Test"
                });
            });

            ContainerHost host = TestAmqpHost.Open();

            try
            {
                host.RegisterLinkProcessor(fakeLinkProcessor);
                Connection connection = await host.ConnectAndAttachAsync(2);

                var securityContext = new SecurityContext();
                securityContext.Authorize(links[0].Session.Connection);
                securityContext.Authorize(links[1].Session.Connection);
                authorized = securityContext.IsAuthorized(links[1].Session.Connection);

                await connection.CloseAsync();
            }
            finally
            {
                host.Close();
            }

            authorized.ShouldBeTrue();
        }
        public void ContainerHostSaslAnonymousTest()
        {
            string       name          = "ContainerHostSaslAnonymousTest";
            ListenerLink link          = null;
            var          linkProcessor = new TestLinkProcessor();

            linkProcessor.OnLinkAttached += a => link = a;
            this.host.RegisterLinkProcessor(this.linkProcessor = linkProcessor);

            var factory = new ConnectionFactory();

            factory.SASL.Profile = SaslProfile.Anonymous;
            var connection = factory.CreateAsync(new Address(Address.Host, Address.Port, null, null, "/", Address.Scheme)).Result;
            var session    = new Session(connection);
            var sender     = new SenderLink(session, name, name);

            sender.Send(new Message("msg1"), SendTimeout);
            connection.Close();

            Assert.IsTrue(link != null, "link is null");
            var listenerConnection = (ListenerConnection)link.Session.Connection;

            Assert.IsTrue(listenerConnection.Principal == null, "principal should be null");
        }
        public void ContainerHostTargetLinkEndpointTest()
        {
            string name = "ContainerHostTargetLinkEndpointTest";
            List<Message> messages = new List<Message>();
            this.linkProcessor = new TestLinkProcessor(
                link => new TargetLinkEndpoint(new TestMessageProcessor(50, messages), link));
            this.host.RegisterLinkProcessor(this.linkProcessor);

            int count = 190;
            var connection = new Connection(Address);
            var session = new Session(connection);
            var sender = new SenderLink(session, "send-link", "any");

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties() { GroupId = name };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();

            Assert.AreEqual(count, messages.Count);
        }
Example #20
0
 public LinkController(ILinkProcessor linkProcessor) => processor = linkProcessor;
Example #21
0
 public BaseController(IMediator mediator, ILinkProcessor processor)
 {
     _mediator  = mediator;
     _processor = processor;
 }
Example #22
0
        public static IEnumerable <LinkModel> CreateLinksForCountries(PageData pageData, SortingArguments sortArgs,
                                                                      FilterArguments filter, string path, ILinkProcessor processor)
        {
            var links = new List <LinkModel>();

            if (pageData.HasPrevPage)
            {
                links.Add(new LinkModel
                {
                    Href = processor.ProcessLinksForCollection(new ResourceParameters
                    {
                        PageArgs = new PageArguments
                        {
                            PageIndex = pageData.PageIndex,
                            PageSize  = pageData.PageSize
                        },
                        SortArgs   = sortArgs,
                        FilterArgs = filter,
                        Path       = path,
                        LinkType   = LinkType.Previous
                    }),
                    Method = "GET",
                    Rel    = "prev_page"
                });
            }

            if (pageData.HasNextPage)
            {
                links.Add(new LinkModel
                {
                    Href = processor.ProcessLinksForCollection(new ResourceParameters
                    {
                        PageArgs = new PageArguments
                        {
                            PageIndex = pageData.PageIndex,
                            PageSize  = pageData.PageSize
                        },
                        SortArgs   = sortArgs,
                        FilterArgs = filter,
                        Path       = path,
                        LinkType   = LinkType.Next
                    }),
                    Method = "GET",
                    Rel    = "prev_page"
                });
            }

            links.Add(new LinkModel
            {
                Href = processor.ProcessLinksForCollection(new ResourceParameters
                {
                    PageArgs = new PageArguments
                    {
                        PageIndex = pageData.PageIndex,
                        PageSize  = pageData.PageSize
                    },
                    SortArgs   = sortArgs,
                    FilterArgs = filter,
                    Path       = path,
                    LinkType   = LinkType.Current
                }),
                Method = "GET",
                Rel    = "self"
            });


            return(links);
        }
        public void ContainerHostPlainPrincipalTest()
        {
            string name = "ContainerHostPlainPrincipalTest";
            ListenerLink link = null;
            var linkProcessor = new TestLinkProcessor();
            linkProcessor.OnLinkAttached += a => link = a;
            this.host.RegisterLinkProcessor(this.linkProcessor = linkProcessor);

            var connection = new Connection(Address);
            var session = new Session(connection);
            var sender = new SenderLink(session, name, name);
            sender.Send(new Message("msg1"), SendTimeout);
            connection.Close();

            Assert.IsTrue(link != null, "link is null");
            var listenerConnection = (ListenerConnection)link.Session.Connection;
            Assert.IsTrue(listenerConnection.Principal != null, "principal is null");
            Assert.IsTrue(listenerConnection.Principal.Identity.AuthenticationType == "PLAIN", "wrong auth type");
        }
Example #24
0
 public CountriesController(IMediator mediator, ILinkProcessor processor) : base(mediator, processor)
 {
 }
        public void ContainerHostProcessorOrderTest()
        {
            string name = "ContainerHostProcessorOrderTest";
            List<Message> messages = new List<Message>();
            this.host.RegisterMessageProcessor(name, new TestMessageProcessor(50, messages));
            this.linkProcessor = new TestLinkProcessor();
            this.host.RegisterLinkProcessor(this.linkProcessor);

            int count = 80;
            var connection = new Connection(Address);
            var session = new Session(connection);
            var sender = new SenderLink(session, "send-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties() { GroupId = name };
                sender.Send(message, SendTimeout);
            }

            sender.Close();

            this.host.RegisterMessageSource(name, new TestMessageSource(new Queue<Message>(messages)));
            var receiver = new ReceiverLink(session, "recv-link", name);
            for (int i = 0; i < count; i++)
            {
                var message = receiver.Receive();
                receiver.Accept(message);
            }

            receiver.Close();

            sender = new SenderLink(session, "send-link", "any");
            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties() { GroupId = name };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();
        }
        public void DuplicateLinkNameDifferentRoleTest()
        {
            string name = "DuplicateLinkNameDifferentRoleTest";
            this.linkProcessor = new TestLinkProcessor();
            this.host.RegisterLinkProcessor(this.linkProcessor);

            string linkName = "same-link-for-different-role";
            var connection = new Connection(Address);
            var session1 = new Session(connection);
            var sender = new SenderLink(session1, linkName, name);
            sender.Send(new Message("msg1"), SendTimeout);

            var session2 = new Session(connection);
            var receiver = new ReceiverLink(session2, linkName, name);
            receiver.SetCredit(2, false);
            var message = receiver.Receive();
            Assert.IsTrue(message != null, "No message was received");
            receiver.Accept(message);

            connection.Close();
        }
        public void ContainerHostSaslAnonymousTest()
        {
            string name = "ContainerHostSaslAnonymousTest";
            ListenerLink link = null;
            var linkProcessor = new TestLinkProcessor();
            linkProcessor.OnLinkAttached += a => link = a;
            this.host.RegisterLinkProcessor(this.linkProcessor = linkProcessor);

            var factory = new ConnectionFactory();
            factory.SASL.Profile = SaslProfile.Anonymous;
            var connection = factory.CreateAsync(new Address(Address.Host, Address.Port, null, null, "/", Address.Scheme)).Result;
            var session = new Session(connection);
            var sender = new SenderLink(session, name, name);
            sender.Send(new Message("msg1"), SendTimeout);
            connection.Close();

            Assert.IsTrue(link != null, "link is null");
            var listenerConnection = (ListenerConnection)link.Session.Connection;
            Assert.IsTrue(listenerConnection.Principal == null, "principal should be null");
        }
Example #28
0
 public RegionsController(IMediator mediator, ILinkProcessor processor) : base(mediator, processor)
 {
 }
        public void ContainerHostLinkProcessorTest()
        {
            string name = "ContainerHostLinkProcessorTest";
            this.host.RegisterLinkProcessor(this.linkProcessor = new TestLinkProcessor());

            int count = 80;
            var connection = new Connection(Address);
            var session = new Session(connection);
            var sender = new SenderLink(session, "send-link", "any");

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties() { GroupId = name };
                sender.Send(message, SendTimeout);
            }

            sender.Close();
            session.Close();
            connection.Close();
        }
 public void MyTestCleanup()
 {
     this.linkProcessor = null;
     this.ClassCleanup();
 }
Example #31
0
 public LanguagesController(IMediator mediator, ILinkProcessor processor) : base(mediator, processor)
 {
 }
        public void ContainerHostSourceLinkEndpointTest()
        {
            string name = "ContainerHostSourceLinkEndpointTest";
            int count = 100;
            Queue<Message> messages = new Queue<Message>();
            for (int i = 0; i < count; i++)
            {
                messages.Enqueue(new Message("test") { Properties = new Properties() { MessageId = name + i } });
            }

            var source = new TestMessageSource(messages);
            this.linkProcessor = new TestLinkProcessor(link => new SourceLinkEndpoint(source, link));
            this.host.RegisterLinkProcessor(this.linkProcessor);

            var connection = new Connection(Address);
            var session = new Session(connection);
            var receiver = new ReceiverLink(session, "receiver0", name);
            int released = 0;
            int rejected = 0;
            for (int i = 1; i <= count; i++)
            {
                Message message = receiver.Receive();
                if (i % 5 == 0)
                {
                    receiver.Reject(message);
                    rejected++;
                }
                else if (i % 17 == 0)
                {
                    receiver.Release(message);
                    released++;
                }
                else
                {
                    receiver.Accept(message);
                }
            }

            receiver.Close();
            session.Close();
            connection.Close();

            Thread.Sleep(200);
            Assert.AreEqual(released, messages.Count);
            Assert.AreEqual(rejected, source.DeadletterMessage.Count);
        }
Example #33
0
 public void RegisterLinkProcessor(ILinkProcessor linkProcessor)
 {
     containerHost.RegisterLinkProcessor(linkProcessor);
 }
 public void MyTestCleanup()
 {
     this.linkProcessor = null;
     this.ClassCleanup();
 }