Ejemplo n.º 1
0
        public void Bytes_WhenSetVariable_ReturnsExpectedResult()
        {
            // arrange
            var action = new SetVariableAction(VariableScope.Session, "ip_score", new TypedData(DataType.Int32, 5));
            var ba     = new BitArray(
                new bool[] {
                true, false, false, false, false, false, false, false, // 10000000
                true, true, false, false, false, false, false, false,  // 11000000
                true, false, false, false, false, false, false, false, // 10000000
                false, false, false, true, false, false, false, false, // 00010000
                true, false, false, true, false, true, true, false,    // 10010110
                false, false, false, false, true, true, true, false,   // 00001110
                true, true, true, true, true, false, true, false,      // 11111010
                true, true, false, false, true, true, true, false,     // 11001110
                true, true, false, false, false, true, true, false,    // 11000110
                true, true, true, true, false, true, true, false,      // 11110110
                false, true, false, false, true, true, true, false,    // 01001110
                true, false, true, false, false, true, true, false,    // 10100110
                false, true, false, false, false, false, false, false, // 01000000
                true, false, true, false, false, false, false, false   // 10100000
            });

            byte[] expected = new byte[14];
            ba.CopyTo(expected, 0);

            // assert
            Assert.AreEqual(
                HelperMethods.ToBitString(expected),
                HelperMethods.ToBitString(action.Bytes));
        }
        public SetVariableActionViewModel(SetVariableAction action) : base(action)
        {
            Option = new OptionViewModel(action, nameof(action.Value));
            Text   = new TextViewModel(action);

            Attach(Option);
            Attach(Text);
        }
Ejemplo n.º 3
0
        public void TestMethod1()
        {
            ExpressionParser  Parser = ExpressionParser.CreateParser();
            SetVariableAction action = new SetVariableAction
            {
                VariableName = "x",
                Expression   = "100$",
                Parser       = Parser
            };

            action.ExecuteAction();
            Assert.IsTrue(Parser.ParsingContext.Parameters.ContainsKey("x"));
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            IPAddress address        = IPAddress.Parse("0.0.0.0");
            int       port           = 12345;
            var       listener       = new TcpListener(address, port);
            var       frameProcessor = new FrameProcessor()
            {
                EnableLogging = true,
                LogFunc       = (msg) => Console.WriteLine(msg)
            };

            listener.Start();
            Console.WriteLine("Listening on {0}:{1}", address, port);

            while (true)
            {
                TcpClient client = listener.AcceptTcpClient();

                Task.Run(() =>
                {
                    NetworkStream stream = client.GetStream();

                    // Cancel stream when process terminates
                    System.AppDomain.CurrentDomain.ProcessExit += (sender, e) =>
                    {
                        frameProcessor.CancelStream(stream);
                    };

                    frameProcessor.HandleStream(stream, (notifyFrame) =>
                    {
                        // NOTIFY frames contain HAProxy messages to the agent.
                        // The agent can send back "actions" to HAProxy via ACK frames.
                        var messages        = ((ListOfMessagesPayload)notifyFrame.Payload).Messages;
                        var responseActions = new List <SpoeAction>();

                        if (messages.Any(msg => msg.Name == "my-message-name"))
                        {
                            var myMessage = messages.First(msg => msg.Name == "my-message-name");

                            // Each message may contain a collection of arguments, which hold the data.
                            TypedData myArg = myMessage.Args.First(arg => arg.Key == "ip").Value;

                            int ip_score = 10;

                            if ((string)myArg.Value == "192.168.50.1")
                            {
                                ip_score = 20;
                            }

                            // You can send actions back to HAProxy, such as setting a variable.
                            SpoeAction setVar =
                                new SetVariableAction(
                                    VariableScope.Session,
                                    "ip_score",
                                    new TypedData(DataType.Int32, ip_score));

                            responseActions.Add(setVar);
                        }

                        return(responseActions);
                    });
                });
            }
        }