(self)
| 29 | os.environ['MSSQL_CLI_TELEMETRY_OPTOUT'].lower() != 'true', |
| 30 | "Only works when telemetry opt-out not set to true.") |
| 31 | def test_telemetry_data_points(self): |
| 32 | test_telemetry_client = self.build_telemetry_client() |
| 33 | test_telemetry_client.start() |
| 34 | |
| 35 | try: |
| 36 | payload = test_telemetry_client.conclude( |
| 37 | service_endpoint_uri='https://vortex.data.microsoft.com/collect/v1/validate', |
| 38 | separate_process=False) |
| 39 | self.assertIsNotNone(payload, 'Payload was empty.') |
| 40 | except HTTPError: |
| 41 | self.fail('Recevied HTTP Error when validating payload against vortex.') |
| 42 | |
| 43 | payload = json.loads(payload.replace("'", '"')) |
| 44 | |
| 45 | expected_data_model_properties = [ |
| 46 | 'Reserved.ChannelUsed', |
| 47 | 'Reserved.SequenceNumber', |
| 48 | 'Reserved.EventId', |
| 49 | 'Reserved.SessionId', |
| 50 | 'Reserved.TimeSinceSessionStart', |
| 51 | 'Reserved.DataModel.Source', |
| 52 | 'Reserved.DataModel.EntitySchemaVersion', |
| 53 | 'Reserved.DataModel.Severity', |
| 54 | 'Reserved.DataModel.CorrelationId', |
| 55 | 'Context.Default.SQLTools.ExeName', |
| 56 | 'Context.Default.SQLTools.ExeVersion', |
| 57 | 'Context.Default.SQLTools.MacAddressHash', |
| 58 | 'Context.Default.SQLTools.OS.Type', |
| 59 | 'Context.Default.SQLTools.OS.Version', |
| 60 | 'Context.Default.SQLTools.IsDocker', |
| 61 | 'Context.Default.SQLTools.User.Id', |
| 62 | 'Context.Default.SQLTools.User.IsMicrosoftInternal', |
| 63 | 'Context.Default.SQLTools.User.IsOptedIn', |
| 64 | 'Context.Default.SQLTools.ShellType', |
| 65 | 'Context.Default.SQLTools.EnvironmentVariables', |
| 66 | 'Context.Default.SQLTools.Locale', |
| 67 | 'Context.Default.SQLTools.StartTime', |
| 68 | 'Context.Default.SQLTools.EndTime', |
| 69 | 'Context.Default.SQLTools.SessionDuration', |
| 70 | 'Context.Default.SQLTools.PythonVersion', |
| 71 | 'Context.Default.SQLTools.ServerVersion', |
| 72 | 'Context.Default.SQLTools.ServerEdition', |
| 73 | 'Context.Default.SQLTools.ConnectionType', |
| 74 | ] |
| 75 | |
| 76 | for record in payload: |
| 77 | properties = record['properties'] |
| 78 | for prop in properties: |
| 79 | self.assertTrue(prop in expected_data_model_properties, |
| 80 | 'Additional property detected: {}.'.format(prop)) |
| 81 | |
| 82 | def test_telemetry_vortex_format(self): |
| 83 | test_telemetry_client = self.build_telemetry_client() |
nothing calls this directly
no test coverage detected