public void Execute_UsesCorrectCommandLineInvocation_ForValidTargetDiscoveryCommands(string discoveryCommand)
        {
            // Arrange
            var instructions      = BuildInstructions(discoveryCommand);
            var variables         = BuildVariables();
            var options           = BuildOptions();
            var commandLineRunner = Substitute.For <ICommandLineRunner>();
            var sut = new NodeExecutor(options, variables, commandLineRunner, new InMemoryLog());
            CommandLineInvocation capturedInvocation = null;
            var fakeResult = new CommandResult("fakeCommand", 0);

            commandLineRunner.Execute(Arg.Do <CommandLineInvocation>(arg => capturedInvocation = arg)).Returns(fakeResult);

            // Act
            sut.Execute(instructions);

            // Assert
            var arguments = capturedInvocation.Arguments.Split(' ');

            arguments.Should().HaveCount(7)
            .And.HaveElementAt(0, $"\"{Path.Combine("expectedBootstrapperPath","bootstrapper.js")}\"")
            .And.HaveElementAt(1, $"\"{discoveryCommand}\"")
            .And.HaveElementAt(2, "\"expectedTargetPath\"")
            .And.HaveElementAt(4, "\"encryptionPassword\"")
            .And.HaveElementAt(5, "\"Octopuss\"")
            .And.HaveElementAt(6, "\"discoveryContextKey\"");
        }
 public Handler(IQueryRunner queryRunner, IRepository api, NodeExecutor node, [CurrentUser] ReviewUser currentUser)
 {
     _queryRunner = queryRunner;
     _api         = api;
     _node        = node;
     _currentUser = currentUser;
 }
 public Handler(IQueryRunner queryRunner, [SiteBase] string siteBase, IRepository api, NodeExecutor node, IMemoryCache cache)
 {
     _queryRunner = queryRunner;
     _siteBase    = siteBase;
     _api         = api;
     _node        = node;
     _cache       = cache;
 }
Esempio n. 4
0
        private void ConfigureNodeIntegration(ContainerBuilder builder)
        {
            var nodeWorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "node-integration");
            var cfg = Configuration.GetSection("Node");

            var executor = new NodeExecutor(cfg["node"], cfg["npm"], nodeWorkingDirectory);

            executor.Bootstrap();

            builder.RegisterInstance(executor).SingleInstance();
        }
        public void Execute_ThrowsCommandException_ForUnknownBootstrapperInvocationCommand()
        {
            // Arrange
            var instructions      = BuildInstructions("wrongCommand");
            var variables         = BuildVariables();
            var options           = BuildOptions();
            var commandLineRunner = Substitute.For <ICommandLineRunner>();
            var sut = new NodeExecutor(options, variables, commandLineRunner, new InMemoryLog());

            // Act
            Action action = () => sut.Execute(instructions);

            // Assert
            action.Should().Throw <CommandException>().WithMessage("Unknown bootstrapper invocation command: 'wrongCommand'");
        }
Esempio n. 6
0
            /// <summary>
            ///   Go over all nodes and execute method defined in NodeExecutor
            /// </summary>
            /// <param name = "nodeExecutor">Class implementing NodeExecutor interface</param>
            /// <param name = "level">level in tree</param>
            protected void doForAllNodes(NodeExecutor nodeExecutor, int level)
            {
                //nodeExecutor can change tree, we should remember this in the beginning, QCR #784544
                bool isFirstSibling = (Parent != null && this == Parent.FirstChild || (this == _enclosingInstance._root));

                if (nodeExecutor.Stop)
                {
                    return;
                }
                nodeExecutor.doBeforeChildren(this, level);
                if (FirstChild != null)
                {
                    FirstChild.doForAllNodes(nodeExecutor, level + 1);
                }
                if (nodeExecutor.Stop)
                {
                    return;
                }
                nodeExecutor.doAfterChildren(this, level);
                if (nodeExecutor.Stop)
                {
                    return;
                }
                // if we use recursion for siblings, call stack may explode
                if (isFirstSibling)
                {
                    NodeBase curr = NextSibling;
                    while (curr != null)
                    {
                        if (nodeExecutor.Stop)
                        {
                            return;
                        }
                        curr.doForAllNodes(nodeExecutor, level);
                        curr = curr.NextSibling;
                    }
                }
            }
Esempio n. 7
0
 /// <summary>
 ///   Go over all nodes and execute method defined in NodeExecutor
 /// </summary>
 /// <param name = "nodeExecutor">Class implementing NodeExecutor interface</param>
 public void doForAllNodes(NodeExecutor nodeExecutor)
 {
     doForAllNodes(nodeExecutor, 0);
 }