public void Utilization_CrossAgentTests(UtilizationTestData testData)
        {
            var utilizationSettingsModel = new UtilizationSettingsModel(
                logicalProcessors: testData.InputLogicalProcessors.HasValue ? testData.InputLogicalProcessors.Value : (int?)null,
                totalRamBytes: testData.InputTotalRamMib.HasValue ? testData.InputTotalRamMib.Value * (1024 * 1024) : (ulong?)null,
                hostname: testData.InputHostname,
                fullHostName: testData.InputFullHostname,
                ipAddress: testData.InputIpAddress,
                bootId: null,
                vendors: PrepareVendorModels(testData),
                utilitizationConfig: PrepareUtilizationConfig(testData)
                );

            // Run Tests below

            var settings = new JsonSerializerSettings
            {
                TypeNameHandling  = Newtonsoft.Json.TypeNameHandling.Auto,
                NullValueHandling = NullValueHandling.Ignore
            };
            var json = JsonConvert.SerializeObject(utilizationSettingsModel);

            Console.WriteLine($"JSON for '{testData.Testname}':\n {json}");
            var actualSettings = JsonConvert.DeserializeObject <ExpectedOutputJson>(json, settings);

            // Root values
            ValidateRootValues(actualSettings, testData.ExpectedOutputJson);

            // Vendors
            ValidateVendors(actualSettings, testData.ExpectedOutputJson);

            // User provided config settings
            ValidateUserConfigSettings(actualSettings, testData.ExpectedOutputJson);
        }
 public ConnectModel(int processId, string language, string displayHost, string hostName, IEnumerable <string> appNames, string agentVersion, long agentVersionTimestamp, SecuritySettingsModel securitySettings, bool highSecurityModeEnabled, string identifier, IEnumerable <Label> labels, JavascriptAgentSettingsModel javascriptAgentSettings, Dictionary <string, string> metadata, UtilizationSettingsModel utilizationSettings, Environment environment, SecurityPoliciesSettingsModel securityPoliciesSettings, EventHarvestConfigModel eventHarvestConfig)
 {
     ProcessId               = processId;
     Language                = language;
     DisplayHost             = displayHost;
     HostName                = hostName;
     AppNames                = appNames;
     AgentVersion            = agentVersion;
     AgentVersionTimestamp   = agentVersionTimestamp;
     SecuritySettings        = securitySettings;
     HighSecurityModeEnabled = highSecurityModeEnabled;
     Identifier              = identifier;
     Labels = labels;
     JavascriptAgentSettings = javascriptAgentSettings;
     Metadata                 = metadata;
     UtilizationSettings      = utilizationSettings;
     Environment              = environment;
     SecurityPoliciesSettings = securityPoliciesSettings;
     EventHarvestConfig       = eventHarvestConfig;
 }