blob: 57e49cc9ba4422ff82cad7fded66d5206e532e84 [file] [log] [blame]
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import datetime
import unittest
import generate_expired_histograms_array
_EXPECTED_HEADER_FILE_CONTENT = (
"""// Generated from generate_expired_histograms_array.py. Do not edit!
#ifndef TEST_TEST_H_
#define TEST_TEST_H_
#include <stdint.h>
namespace some_namespace {{
// Contains hashes of expired histograms.
{array_definition}
}} // namespace some_namespace
#endif // TEST_TEST_H_
""")
_EXPECTED_NON_EMPTY_ARRAY_DEFINITION = (
"""const uint64_t kExpiredHistogramsHashes[] = {
0x965ce8e9e12a9c89, // Test.FirstHistogram
0xdb5b2f55ffd139e8, // Test.SecondHistogram
};
const size_t kNumExpiredHistograms = 2;"""
)
_EXPECTED_EMPTY_ARRAY_DEFINITION = (
"""const uint64_t kExpiredHistogramsHashes[] = {
0x0000000000000000, // Dummy.Histogram
};
const size_t kNumExpiredHistograms = 1;"""
)
class ExpiredHistogramsTest(unittest.TestCase):
def testGetExpiredHistograms(self):
histograms = {
"FirstHistogram": {
"expiry_date": "2000/10/01"
},
"SecondHistogram": {
"expiry_date": "2002/10/01"
},
"ThirdHistogram": {
"expiry_date": "2001/10/01"
},
"FourthHistogram": {},
"FifthHistogram": {
"obsolete": "Has expired.",
"expiry_date": "2000/10/01"
}
}
base_date = datetime.date(2001, 10, 1)
expired_histograms_names = (
generate_expired_histograms_array._GetExpiredHistograms(
histograms, base_date))
self.assertEqual(expired_histograms_names, ["FirstHistogram"])
def testBadExpiryDate(self):
histograms = {
"FirstHistogram": {
"expiry_date": "2000/10/01"
},
"SecondHistogram": {
"expiry_date": "2000-10-01"
},
}
base_date = datetime.date(2000, 10, 01)
with self.assertRaises(generate_expired_histograms_array.Error) as error:
_ = generate_expired_histograms_array._GetExpiredHistograms(histograms,
base_date)
self.assertEqual(
"Unable to parse expiry date 2000-10-01 in histogram SecondHistogram.",
str(error.exception))
def testGenerateHeaderFileContent(self):
header_filename = "test/test.h"
namespace = "some_namespace"
histogram_map = generate_expired_histograms_array._GetHashToNameMap(
["Test.FirstHistogram", "Test.SecondHistogram"])
expected_histogram_map = {
"0x965ce8e9e12a9c89": "Test.FirstHistogram",
"0xdb5b2f55ffd139e8": "Test.SecondHistogram",
}
self.assertEqual(expected_histogram_map, histogram_map)
content = generate_expired_histograms_array._GenerateHeaderFileContent(
header_filename, namespace, histogram_map)
self.assertEqual(_EXPECTED_HEADER_FILE_CONTENT.format(
array_definition=_EXPECTED_NON_EMPTY_ARRAY_DEFINITION), content)
def testGenerateHeaderFileContentEmptyArray(self):
header_filename = "test/test.h"
namespace = "some_namespace"
content = generate_expired_histograms_array._GenerateHeaderFileContent(
header_filename, namespace, dict())
self.assertEqual(_EXPECTED_HEADER_FILE_CONTENT.format(
array_definition=_EXPECTED_EMPTY_ARRAY_DEFINITION), content)
if __name__ == "__main__":
unittest.main()