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 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); }
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); }