Esempio n. 1
0
        public void ApplyConfiguration_Singleton()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject singleton = new JObject();

            config["singleton"] = singleton;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(ID, scriptConfig.HostConfig.HostId);
            Assert.Equal(15, scriptConfig.HostConfig.Singleton.LockPeriod.TotalSeconds);
            Assert.Equal(1, scriptConfig.HostConfig.Singleton.ListenerLockPeriod.TotalMinutes);
            Assert.Equal(1, scriptConfig.HostConfig.Singleton.ListenerLockRecoveryPollingInterval.TotalMinutes);
            Assert.Equal(TimeSpan.MaxValue, scriptConfig.HostConfig.Singleton.LockAcquisitionTimeout);
            Assert.Equal(5, scriptConfig.HostConfig.Singleton.LockAcquisitionPollingInterval.TotalSeconds);

            singleton["lockPeriod"]         = "00:00:17";
            singleton["listenerLockPeriod"] = "00:00:22";
            singleton["listenerLockRecoveryPollingInterval"] = "00:00:33";
            singleton["lockAcquisitionTimeout"]         = "00:05:00";
            singleton["lockAcquisitionPollingInterval"] = "00:00:08";

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(17, scriptConfig.HostConfig.Singleton.LockPeriod.TotalSeconds);
            Assert.Equal(22, scriptConfig.HostConfig.Singleton.ListenerLockPeriod.TotalSeconds);
            Assert.Equal(33, scriptConfig.HostConfig.Singleton.ListenerLockRecoveryPollingInterval.TotalSeconds);
            Assert.Equal(5, scriptConfig.HostConfig.Singleton.LockAcquisitionTimeout.TotalMinutes);
            Assert.Equal(8, scriptConfig.HostConfig.Singleton.LockAcquisitionPollingInterval.TotalSeconds);
        }
Esempio n. 2
0
        public void ApplyConfiguration_FileWatching()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            Assert.True(scriptConfig.FileWatchingEnabled);

            scriptConfig = new ScriptHostConfiguration();
            config["fileWatchingEnabled"] = new JValue(true);
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.True(scriptConfig.FileWatchingEnabled);
            Assert.Equal(1, scriptConfig.WatchDirectories.Count);
            Assert.Equal("node_modules", scriptConfig.WatchDirectories.ElementAt(0));

            scriptConfig = new ScriptHostConfiguration();
            config["fileWatchingEnabled"] = new JValue(false);
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.False(scriptConfig.FileWatchingEnabled);

            scriptConfig = new ScriptHostConfiguration();
            config["fileWatchingEnabled"] = new JValue(true);
            config["watchDirectories"]    = new JArray("Shared", "Tools");
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.True(scriptConfig.FileWatchingEnabled);
            Assert.Equal(3, scriptConfig.WatchDirectories.Count);
            Assert.Equal("node_modules", scriptConfig.WatchDirectories.ElementAt(0));
            Assert.Equal("Shared", scriptConfig.WatchDirectories.ElementAt(1));
            Assert.Equal("Tools", scriptConfig.WatchDirectories.ElementAt(2));
        }
        public void ApplyConfiguration_Swagger()
        {
            JObject config = new JObject();

            config["id"] = ID;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            // no swagger section
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(false, scriptConfig.SwaggerEnabled);

            // empty swagger section
            JObject swagger = new JObject();

            config["swagger"] = swagger;
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(false, scriptConfig.SwaggerEnabled);

            // swagger section present, with swagger mode set to null
            swagger["enabled"] = string.Empty;
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(false, scriptConfig.SwaggerEnabled);

            // swagger section present, with swagger mode set to true
            swagger["enabled"] = true;
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(true, scriptConfig.SwaggerEnabled);

            // swagger section present, with swagger mode set to invalid
            swagger["enabled"] = "invalid";
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(false, scriptConfig.SwaggerEnabled);
        }
Esempio n. 4
0
        public void ApplyConfiguration_Queues()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject queuesConfig = new JObject();

            config["queues"] = queuesConfig;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(ID, scriptConfig.HostConfig.HostId);
            Assert.Equal(60 * 1000, scriptConfig.HostConfig.Queues.MaxPollingInterval.TotalMilliseconds);
            Assert.Equal(16, scriptConfig.HostConfig.Queues.BatchSize);
            Assert.Equal(5, scriptConfig.HostConfig.Queues.MaxDequeueCount);
            Assert.Equal(8, scriptConfig.HostConfig.Queues.NewBatchThreshold);

            queuesConfig["maxPollingInterval"] = 5000;
            queuesConfig["batchSize"]          = 17;
            queuesConfig["maxDequeueCount"]    = 3;
            queuesConfig["newBatchThreshold"]  = 123;

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(5000, scriptConfig.HostConfig.Queues.MaxPollingInterval.TotalMilliseconds);
            Assert.Equal(17, scriptConfig.HostConfig.Queues.BatchSize);
            Assert.Equal(3, scriptConfig.HostConfig.Queues.MaxDequeueCount);
            Assert.Equal(123, scriptConfig.HostConfig.Queues.NewBatchThreshold);
        }
Esempio n. 5
0
        public void ApplyConfiguration_Http()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject http = new JObject();

            config["http"] = http;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(ScriptConstants.DefaultHttpRoutePrefix, scriptConfig.HttpConfiguration.RoutePrefix);
            Assert.Equal(false, scriptConfig.HttpConfiguration.DynamicThrottlesEnabled);
            Assert.Equal(scriptConfig.HttpConfiguration.MaxConcurrentRequests, DataflowBlockOptions.Unbounded);
            Assert.Equal(scriptConfig.HttpConfiguration.MaxOutstandingRequests, DataflowBlockOptions.Unbounded);

            http["routePrefix"]             = "myprefix";
            http["dynamicThrottlesEnabled"] = true;
            http["maxConcurrentRequests"]   = 5;
            http["maxOutstandingRequests"]  = 10;

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal("myprefix", scriptConfig.HttpConfiguration.RoutePrefix);
            Assert.Equal(true, scriptConfig.HttpConfiguration.DynamicThrottlesEnabled);
            Assert.Equal(scriptConfig.HttpConfiguration.MaxConcurrentRequests, 5);
            Assert.Equal(scriptConfig.HttpConfiguration.MaxOutstandingRequests, 10);
        }
Esempio n. 6
0
        public void ApplyConfiguration_TimeoutDefaultsNull_IfNotDynamic()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Null(scriptConfig.FunctionTimeout);
        }
Esempio n. 7
0
        public void ApplyConfiguration_TopLevel()
        {
            JObject config = new JObject();

            config["id"] = ID;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(ID, scriptConfig.HostConfig.HostId);
        }
Esempio n. 8
0
        public void ApplyConfiguration_AppliesTimeout()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            Assert.Null(scriptConfig.FunctionTimeout);

            config["functionTimeout"] = "00:00:30";

            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(TimeSpan.FromSeconds(30), scriptConfig.FunctionTimeout);
        }
Esempio n. 9
0
        public void ApplyConfiguration_NoTimeoutLimits_IfNotDynamic()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            config["functionTimeout"] = "00:05:01";
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(TimeSpan.FromSeconds(301), scriptConfig.FunctionTimeout);

            config["functionTimeout"] = "00:00:00.9";
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(TimeSpan.FromMilliseconds(900), scriptConfig.FunctionTimeout);
        }
Esempio n. 10
0
        public void ApplyConfiguration_AppliesFunctionsFilter()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            Assert.Null(scriptConfig.Functions);

            config["functions"] = new JArray("Function1", "Function2");

            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(2, scriptConfig.Functions.Count);
            Assert.Equal("Function1", scriptConfig.Functions.ElementAt(0));
            Assert.Equal("Function2", scriptConfig.Functions.ElementAt(1));
        }
Esempio n. 11
0
        public void ApplyConfiguration_Tracing()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject tracing = new JObject();

            config["tracing"] = tracing;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            Assert.Equal(TraceLevel.Info, scriptConfig.HostConfig.Tracing.ConsoleLevel);

            tracing["consoleLevel"] = "Verbose";

            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(TraceLevel.Verbose, scriptConfig.HostConfig.Tracing.ConsoleLevel);
        }
Esempio n. 12
0
        public void ApplyConfiguration_TimeoutDefaults5Minutes_IfDynamic()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            try
            {
                _settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteSku, "Dynamic");
                ScriptHost.ApplyConfiguration(config, scriptConfig);
                Assert.Equal(TimeSpan.FromMinutes(5), scriptConfig.FunctionTimeout);
            }
            finally
            {
                _settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteSku, null);
            }
        }
Esempio n. 13
0
        public void ApplyConfiguration_Http()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject http = new JObject();

            config["http"] = http;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal(ScriptConstants.DefaultHttpRoutePrefix, scriptConfig.HttpRoutePrefix);

            http["routePrefix"] = "myprefix";

            ScriptHost.ApplyConfiguration(config, scriptConfig);

            Assert.Equal("myprefix", scriptConfig.HttpRoutePrefix);
        }
Esempio n. 14
0
        public void ApplyConfiguration_AppliesTimeoutLimits_IfDynamic()
        {
            JObject config = new JObject();

            config["id"] = ID;

            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            try
            {
                _settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteSku, "Dynamic");

                config["functionTimeout"] = "00:05:01";
                Assert.Throws <ArgumentException>(() => ScriptHost.ApplyConfiguration(config, scriptConfig));

                config["functionTimeout"] = "00:00:00.9";
                Assert.Throws <ArgumentException>(() => ScriptHost.ApplyConfiguration(config, scriptConfig));
            }
            finally
            {
                _settingsManager.SetSetting(EnvironmentSettingNames.AzureWebsiteSku, null);
            }
        }
Esempio n. 15
0
        public void ApplyConfiguration_Tracing()
        {
            JObject config = new JObject();

            config["id"] = ID;
            JObject tracing = new JObject();

            config["tracing"] = tracing;
            ScriptHostConfiguration scriptConfig = new ScriptHostConfiguration();

            Assert.Equal(TraceLevel.Info, scriptConfig.HostConfig.Tracing.ConsoleLevel);
            Assert.Equal(FileLoggingMode.Never, scriptConfig.FileLoggingMode);

            tracing["consoleLevel"]    = "Verbose";
            tracing["fileLoggingMode"] = "Always";

            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(TraceLevel.Verbose, scriptConfig.HostConfig.Tracing.ConsoleLevel);
            Assert.Equal(FileLoggingMode.Always, scriptConfig.FileLoggingMode);

            tracing["fileLoggingMode"] = "DebugOnly";
            ScriptHost.ApplyConfiguration(config, scriptConfig);
            Assert.Equal(FileLoggingMode.DebugOnly, scriptConfig.FileLoggingMode);
        }