def test_encodes_fully_populated_result_correctly(self):
        result = create_ndt_result(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 23, 452234,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 59, 33, 284345,
                                       pytz.utc),
            client='mock_client',
            client_version='mock_client_version',
            os='mock_os',
            os_version='mock_os_version')
        result.c2s_result = results.NdtSingleTestResult(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 24, 123456,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 51, 34, 123456,
                                       pytz.utc),
            throughput=10.127)
        result.s2c_result = results.NdtSingleTestResult(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 35, 123456,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 51, 45, 123456,
                                       pytz.utc),
            throughput=98.235)
        result.latency = 23.8
        result.browser = 'mock_browser'
        result.browser_version = 'mock_browser_version'
        result.errors = [
            results.TestError(
                'mock error message 1',
                datetime.datetime(2016, 2, 26, 15, 53, 29, 123456, pytz.utc))
        ]
        encoded_expected = """
{
    "start_time": "2016-02-26T15:51:23.452234Z",
    "end_time": "2016-02-26T15:59:33.284345Z",
    "client": "mock_client",
    "client_version": "mock_client_version",
    "browser": "mock_browser",
    "browser_version": "mock_browser_version",
    "os": "mock_os",
    "os_version": "mock_os_version",
    "c2s_start_time": "2016-02-26T15:51:24.123456Z",
    "c2s_end_time": "2016-02-26T15:51:34.123456Z",
    "c2s_throughput": 10.127,
    "s2c_start_time": "2016-02-26T15:51:35.123456Z",
    "s2c_end_time": "2016-02-26T15:51:45.123456Z",
    "s2c_throughput": 98.235,
    "latency": 23.8,
    "errors": [
        {
            "timestamp": "2016-02-26T15:53:29.123456Z",
            "message": "mock error message 1"
        }
    ]
}"""

        encoded_actual = self.encoder.encode(result)
        self.assertJsonEqual(encoded_expected, encoded_actual)
    def test_encodes_zero_valued_metrics(self):
        """Explicit zeroes should be encoded as zeroes, not nulls."""
        result = results.NdtResult(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 23, 452234,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 59, 33, 284345,
                                       pytz.utc),
            client='mock_client',
            client_version='mock_client_version',
            os='mock_os',
            os_version='mock_os_version',
            c2s_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 24, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 34, 123456,
                                           pytz.utc),
                throughput=0.0),
            s2c_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 35, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 45, 123456,
                                           pytz.utc),
                throughput=0.0),
            latency=0.0)
        encoded_expected = """
{
    "start_time": "2016-02-26T15:51:23.452234Z",
    "end_time": "2016-02-26T15:59:33.284345Z",
    "client": "mock_client",
    "client_version": "mock_client_version",
    "browser": null,
    "browser_version": null,
    "os": "mock_os",
    "os_version": "mock_os_version",
    "c2s_start_time": "2016-02-26T15:51:24.123456Z",
    "c2s_end_time": "2016-02-26T15:51:34.123456Z",
    "c2s_throughput": 0.0,
    "s2c_start_time": "2016-02-26T15:51:35.123456Z",
    "s2c_end_time": "2016-02-26T15:51:45.123456Z",
    "s2c_throughput": 0.0,
    "latency": 0.0,
    "errors": []
}"""

        encoded_actual = self.encoder.encode(result)
        self.assertJsonEqual(encoded_expected, encoded_actual)
    def test_encodes_correctly_when_latency_is_missing(self):
        result = results.NdtResult(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 23, 452234,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 59, 33, 284345,
                                       pytz.utc),
            client='mock_client',
            client_version='mock_client_version',
            os='mock_os',
            os_version='mock_os_version',
            c2s_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 24, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 34, 123456,
                                           pytz.utc),
                throughput=10.127),
            s2c_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 35, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 45, 123456,
                                           pytz.utc),
                throughput=98.235))
        encoded_expected = """
{
    "start_time": "2016-02-26T15:51:23.452234Z",
    "end_time": "2016-02-26T15:59:33.284345Z",
    "client": "mock_client",
    "client_version": "mock_client_version",
    "browser": null,
    "browser_version": null,
    "os": "mock_os",
    "os_version": "mock_os_version",
    "c2s_start_time": "2016-02-26T15:51:24.123456Z",
    "c2s_end_time": "2016-02-26T15:51:34.123456Z",
    "c2s_throughput": 10.127,
    "s2c_start_time": "2016-02-26T15:51:35.123456Z",
    "s2c_end_time": "2016-02-26T15:51:45.123456Z",
    "s2c_throughput": 98.235,
    "latency": null,
    "errors": []
}"""

        encoded_actual = self.encoder.encode(result)
        self.assertJsonEqual(encoded_expected, encoded_actual)
Esempio n. 4
0
    def test_decodes_fully_populated_result_correctly(self):
        encoded = """
{
    "start_time": "2016-02-26T15:51:23.452234Z",
    "end_time": "2016-02-26T15:59:33.284345Z",
    "client": "mock_client",
    "client_version": "mock_client_version",
    "browser": "mock_browser",
    "browser_version": "mock_browser_version",
    "os": "mock_os",
    "os_version": "mock_os_version",
    "c2s_start_time": "2016-02-26T15:51:24.123456Z",
    "c2s_end_time": "2016-02-26T15:51:34.123456Z",
    "c2s_throughput": 10.127,
    "s2c_start_time": "2016-02-26T15:51:35.123456Z",
    "s2c_end_time": "2016-02-26T15:51:45.123456Z",
    "s2c_throughput": 98.235,
    "latency": 23.8,
    "errors": [
        {
            "timestamp": "2016-02-26T15:53:29.123456Z",
            "message": "mock error message 1"
        },
        {
            "timestamp": "2016-02-26T15:53:30.654321Z",
            "message": "mock error message 2"
        }
    ]
}"""

        decoded_expected = results.NdtResult(
            start_time=datetime.datetime(2016, 2, 26, 15, 51, 23, 452234,
                                         pytz.utc),
            end_time=datetime.datetime(2016, 2, 26, 15, 59, 33, 284345,
                                       pytz.utc),
            client='mock_client',
            client_version='mock_client_version',
            os='mock_os',
            os_version='mock_os_version',
            c2s_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 24, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 34, 123456,
                                           pytz.utc),
                throughput=10.127),
            s2c_result=results.NdtSingleTestResult(
                start_time=datetime.datetime(2016, 2, 26, 15, 51, 35, 123456,
                                             pytz.utc),
                end_time=datetime.datetime(2016, 2, 26, 15, 51, 45, 123456,
                                           pytz.utc),
                throughput=98.235),
            latency=23.8,
            browser='mock_browser',
            browser_version='mock_browser_version',
            errors=[
                results.TestError(
                    'mock error message 1',
                    datetime.datetime(2016, 2, 26, 15, 53, 29, 123456,
                                      pytz.utc)),
                results.TestError(
                    'mock error message 2',
                    datetime.datetime(2016, 2, 26, 15, 53, 30, 654321,
                                      pytz.utc))
            ])

        decoded_actual = self.decoder.decode(encoded)
        self.assertEqual(decoded_expected, decoded_actual)