public void WhenInstanceNotAddedButStopEventRecorded_ThenInstanceIncludedInSetAsMissingTenancy() { var b = new InstanceSetHistoryBuilder( new DateTime(2019, 12, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)); b.Process(new StopInstanceEvent(new LogRecord() { LogName = "projects/project-1/logs/cloudaudit.googleapis.com%2Factivity", ProtoPayload = new AuditLogRecord() { MethodName = StopInstanceEvent.Method, ResourceName = "projects/project-1/zones/us-central1-a/instances/instance-1" }, Resource = new ResourceRecord() { Labels = new Dictionary <string, string> { { "instance_id", "123" } } }, Timestamp = new DateTime(2019, 12, 31) })); var set = b.Build(); Assert.AreEqual(1, set.Instances.Count()); Assert.AreEqual(123, set.Instances.First().InstanceId); Assert.AreEqual(InstanceHistoryState.MissingTenancy, set.Instances.First().State); }
private static InstanceSetHistory BuildHistoryFromResource(string resourceName) { var testDataResource = Assembly.GetExecutingAssembly() .GetManifestResourceNames() .First(n => n.EndsWith(resourceName)); var b = new InstanceSetHistoryBuilder( new DateTime(2019, 12, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)); using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(testDataResource)) using (var reader = new JsonTextReader(new StreamReader(stream))) { var events = new JsonSerializer().Deserialize <LogRecord[]>(reader) .Select(rec => rec.ToEvent()) .OrderByDescending(e => e.Timestamp); foreach (var e in events) { b.Process(e); } } return(b.Build()); }
public async Task WhenInstanceCreated_ThenListInstanceEventsAsyncCanFeedHistorySetBuilder( [LinuxInstance] InstanceRequest testInstance) { await testInstance.AwaitReady(); var instanceRef = await testInstance.GetInstanceAsync(); var loggingService = new LoggingService(new BaseClientService.Initializer { HttpClientInitializer = Defaults.GetCredential() }); var computeService = new ComputeService(new BaseClientService.Initializer { HttpClientInitializer = Defaults.GetCredential() }); var instanceBuilder = new InstanceSetHistoryBuilder( DateTime.UtcNow.AddDays(-7), DateTime.UtcNow); await instanceBuilder.AddExistingInstances( computeService.Instances, computeService.Disks, Defaults.ProjectId); await loggingService.Entries.ListInstanceEventsAsync( new[] { Defaults.ProjectId }, instanceBuilder.StartDate, instanceBuilder); var set = instanceBuilder.Build(); var testInstanceHistory = set.Instances.FirstOrDefault(i => i.Reference == instanceRef); Assert.IsNotNull(testInstanceHistory, "Instance found in history"); }
public async Task WhenInstanceCreated_ThenListInstanceEventsAsyncCanFeedHistorySetBuilder( [LinuxInstance] InstanceRequest testInstance) { await testInstance.AwaitReady(); var instanceRef = await testInstance.GetInstanceAsync(); var instanceBuilder = new InstanceSetHistoryBuilder( DateTime.UtcNow.AddDays(-7), DateTime.UtcNow); var computeAdapter = new ComputeEngineAdapter(Defaults.GetCredential()); instanceBuilder.AddExistingInstances( await computeAdapter.ListInstancesAsync(Defaults.ProjectId, CancellationToken.None), await computeAdapter.ListDisksAsync(Defaults.ProjectId, CancellationToken.None), Defaults.ProjectId); var adapter = new AuditLogAdapter(Defaults.GetCredential()); await adapter.ListInstanceEventsAsync( new[] { Defaults.ProjectId }, null, // all zones. null, // all instances. instanceBuilder.StartDate, instanceBuilder, CancellationToken.None); var set = instanceBuilder.Build(); var testInstanceHistory = set.Instances.FirstOrDefault(i => i.Reference == instanceRef); Assert.IsNotNull(testInstanceHistory, "Instance found in history"); }
private static ReportArchive CreateReportArchive() { var builder = new InstanceSetHistoryBuilder( BaselineTime, BaselineTime.AddDays(7)); return(new ReportArchive(builder.Build())); }
private ReportViewModel CreateParentViewModel( int fleetInstanceCount, int soleTenantInstanceCount) { this.instanceIdSequence = 0; var builder = new InstanceSetHistoryBuilder( BaselineTime, BaselineTime.AddDays(7)); AddExistingInstance(builder, fleetInstanceCount, builder.EndDate, Tenancies.Fleet); AddExistingInstance(builder, soleTenantInstanceCount, builder.EndDate, Tenancies.SoleTenant); return(new ReportViewModel(new ReportArchive(builder.Build()))); }
public void WhenInstanceNotAddedButInsertEventRecorded_ThenInstanceIncludedInSet() { var b = new InstanceSetHistoryBuilder( new DateTime(2019, 12, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)); b.Process(new TerminateOnHostMaintenanceEvent(new LogRecord() { LogName = "projects/project-1/logs/cloudaudit.googleapis.com%2Fsystem_event", ProtoPayload = new AuditLogRecord() { MethodName = TerminateOnHostMaintenanceEvent.Method, ResourceName = "projects/project-1/zones/us-central1-a/instances/instance-1", }, Resource = new ResourceRecord() { Labels = new Dictionary <string, string> { { "instance_id", "123" } } }, Timestamp = new DateTime(2019, 12, 31), Severity = "INFO" })); b.Process(new InsertInstanceEvent(new LogRecord() { LogName = "projects/project-1/logs/cloudaudit.googleapis.com%2Factivity", ProtoPayload = new AuditLogRecord() { MethodName = InsertInstanceEvent.Method, ResourceName = "projects/project-1/zones/us-central1-a/instances/instance-1", }, Resource = new ResourceRecord() { Labels = new Dictionary <string, string> { { "instance_id", "123" } } }, Timestamp = new DateTime(2019, 12, 31) })); var set = b.Build(); Assert.AreEqual(1, set.Instances.Count()); Assert.AreEqual(123, set.Instances.First().InstanceId); }
public void WhenInstanceAdded_ThenInstanceIncludedInSet() { var b = new InstanceSetHistoryBuilder( new DateTime(2019, 12, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)); b.AddExistingInstance( 1, SampleReference, SampleImage, InstanceState.Running, DateTime.Now, Tenancies.Fleet); var set = b.Build(); Assert.AreEqual(1, set.Instances.Count()); Assert.AreEqual(1, set.Instances.First().InstanceId); }
public void WhenSoleTenantInstanceAdded_ThenInstanceIncludedInSet() { var b = new InstanceSetHistoryBuilder( new DateTime(2019, 12, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc)); b.AddExistingInstance( 1, SampleReference, SampleImage, InstanceState.Running, DateTime.Now, Tenancies.SoleTenant, "server-1", new NodeTypeLocator("project-1", "zone-1", "type-1")); var set = b.Build(); Assert.AreEqual(1, set.Instances.Count()); Assert.AreEqual(1, set.Instances.First().InstanceId); Assert.AreEqual("server-1", set.Instances.First().Placements.First().ServerId); Assert.AreEqual("type-1", set.Instances.First().Placements.First().NodeType.Name); }
public async Task WhenInstanceCreated_ThenProcessInstanceEventsAsyncCanFeedHistorySetBuilder( [LinuxInstance] ResourceTask <InstanceLocator> testInstance, [Credential(Roles = new[] { PredefinedRole.ComputeViewer, PredefinedRole.LogsViewer })] ResourceTask <ICredential> credential) { await testInstance; var instanceRef = await testInstance; var instanceBuilder = new InstanceSetHistoryBuilder( DateTime.UtcNow.AddDays(-7), DateTime.UtcNow); var computeAdapter = new ComputeEngineAdapter(await credential); instanceBuilder.AddExistingInstances( await computeAdapter.ListInstancesAsync(TestProject.ProjectId, CancellationToken.None), await computeAdapter.ListNodesAsync(TestProject.ProjectId, CancellationToken.None), await computeAdapter.ListDisksAsync(TestProject.ProjectId, CancellationToken.None), TestProject.ProjectId); var adapter = new AuditLogAdapter(await credential); await adapter.ProcessInstanceEventsAsync( new[] { TestProject.ProjectId }, null, // all zones. null, // all instances. instanceBuilder.StartDate, instanceBuilder, CancellationToken.None); var set = instanceBuilder.Build(); var testInstanceHistory = set.Instances.FirstOrDefault(i => i.Reference == instanceRef); Assert.IsNotNull(testInstanceHistory, "Instance found in history"); }