No more parameterized tests linkage warnings.

[ Merge of http://go/wvgerrit/85153 ]

Issues addressed in this CL:
1)  Linkage warnings in g++
2)  Inconsistent `override` with clang++
3)  Test variable names

Some of our tests use types defined in test-local anonymous namespace.  For
our tests setup, this does not cause any linkage issues; however, g++ produces
warnings about it.

The options were to suppress it with `-Wno-subobject-linkage`, or to change
the tests to avoid even the potential of a linkage error.

There were additional warnings showing up about the use of `override` on
derived mock classes.  The solution was simply to remove the `override`
qualifier on `MockFile`'s destructor.

Some of the test data variables were using snake_case, here I switched it to
kConstantCamelCase.

Bug: 139808919
Test: Compiling with gcc, Linux unittests and Android unittests
Change-Id: Ic3f82a6db7fad990ffe49186914084b039ec8a14
This commit is contained in:
Alex Dale
2019-09-05 16:46:52 -07:00
parent 1d9ecb6e0e
commit 3ba51eccd6
2 changed files with 624 additions and 619 deletions

View File

@@ -131,18 +131,15 @@ struct LicenseInfo {
std::string file_data;
};
size_t kNumberOfLicenses = 3;
// Sample license data and related data for storage and use for offline
// playback. The license data and URLs in this test are not real. Test
// storage and retrieval of license-related data.
LicenseInfo license_test_data[] = {
const LicenseInfo kLicenseTestData[] = {
// license 0
{"ksid54C57C966E23CEF5", DeviceFiles::kLicenseStateActive,
a2bs_hex("0801121030313233343536373839414243444546"),
a2bs_hex(
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
@@ -203,8 +200,7 @@ LicenseInfo license_test_data[] = {
"39FA1E7AE925B494B361F6F7116F20BE8EE6E446146027F4FD4300F4A0B0"
"A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8D2B8FA38732A57697"
"C316C180717C182A971C94E4AC4C7DF8F161CB8CC1"),
a2bs_hex(
"080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
a2bs_hex("080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
"6E2F64726D2E6367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A"
@@ -225,12 +221,10 @@ LicenseInfo license_test_data[] = {
"6294860DFB4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8"
"F156E84877DDA781AAAAFC797FF75AFE2019ADC3A2E419BF0253C705BD47"
"97A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0C7D29252F52FD5"),
a2bs_hex(
"08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
a2bs_hex("08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
"112002280018022A0C31353532333030360000000030151A20C30375683C"
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A27"),
a2bs_hex(
"0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
a2bs_hex("0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
"0112001A16200342120A106B63746C0000000000ECDCBE0000000020DBDF"
"A68F051A20182F029E35047A3841FA176C74E5B387350E8D58DEA6878FF0"
"BEA6CABACA1C2C"),
@@ -316,14 +310,12 @@ LicenseInfo license_test_data[] = {
"A176C74E5B387350E8D58DEA6878FF0BEA6CABACA1C2C3A2E68747470733A2F2F7465"
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
"365400048005800620068001220785CE1756656A049E77F28C8449AB2DD115B6C43B2"
"FF232D23F98B72F1DCE96A"
)},
"FF232D23F98B72F1DCE96A")},
// license 1
{"ksidC8EAA2579A282EB0", DeviceFiles::kLicenseStateReleasing,
a2bs_hex("0801121030313233343536373839414243444546"),
a2bs_hex(
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
@@ -384,8 +376,7 @@ LicenseInfo license_test_data[] = {
"0D1706B0B851B3FCAF7AC2370EAD80C5D1620887633A42024862FCEA9F95"
"A719AAB989C1923C6452ECB0B75AF1CAFBFB06C5EC31BBF0EE4D16ACCC9A"
"F05B77D61C4855491B3D4AC150F3BCB7AE536AF333"),
a2bs_hex(
"080212CC020A190A093938373635343332311208F97F2B3856CBB3DD2002"
a2bs_hex("080212CC020A190A093938373635343332311208F97F2B3856CBB3DD2002"
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
"6E2F64726D2E6367691A661210C5C43FE0178AEE7B85042F749D5A40251A"
@@ -406,12 +397,10 @@ LicenseInfo license_test_data[] = {
"87CF9841D186BC95A65956BAD48F3C9E43F027CC03B73DFF5CAFC0B64727"
"E2D7B3A9CF25F97C475207C8A9DF091A585288A71AE64B7B2089871F7272"
"381CCBEF55EBF3DCB21B134FE48BFD5299DCCA6B01B55EEA61F9F990D0AF"),
a2bs_hex(
"08011231121D1A1B0A190A093938373635343332311208F97F2B3856CBB3"
a2bs_hex("08011231121D1A1B0A190A093938373635343332311208F97F2B3856CBB3"
"DD2002280018022A0C33333932383235393733000030151A209ADE9B0A41"
"1583962BDA31BE5BE937E589BB3DCC06F6F4C48FBE4FAE86DC9ABA"),
a2bs_hex(
"0802123B0A190A093938373635343332311208F97F2B3856CBB3DD200228"
a2bs_hex("0802123B0A190A093938373635343332311208F97F2B3856CBB3DD200228"
"0112001A16200342120A106B63746C00000000CA3A6A75000000002083E5"
"A68F051A20BDA6A56F7CBFD0942198F87C23A34AA5CBD64AFEB134277774"
"CCF8E789D815DD"),
@@ -509,8 +498,7 @@ LicenseInfo license_test_data[] = {
// license 2
{"ksidE8C37662C88DC673", DeviceFiles::kLicenseStateReleasing,
a2bs_hex("0801121030313233343536373839414243444546"),
a2bs_hex(
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
@@ -571,8 +559,7 @@ LicenseInfo license_test_data[] = {
"0615A55523305BC64DDFF52A87BD0DE9EEAB6445C5A1847E5E6FE8D640C7"
"B07F3B066B911793F06E973A02FA6EDD274570C4CA982D353F1E72A5B776"
"95D554B4FB554B46F5FA5B3B00805C136A9ED21FC2"),
a2bs_hex(
"080212CC020A190A0939383736353433323112087AD49366C8D919132002"
a2bs_hex("080212CC020A190A0939383736353433323112087AD49366C8D919132002"
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
"6E2F64726D2E6367691A6612109161841718D5D0A4C4368820F4D030721A"
@@ -593,12 +580,10 @@ LicenseInfo license_test_data[] = {
"222AC08DCBD36077E0459D940BAE84ABA584700C02E70F3AE034ED7B764C"
"6EE5E85663D657270C9AB40D3109920AB1C1C5DA1358E384EDF673253C04"
"F20AA6B0CC98F421A4CD86C4C88042B0DE9902D5D00B6AD817B1A313ED5B"),
a2bs_hex(
"08011231121D1A1B0A190A0939383736353433323112087AD49366C8D919"
a2bs_hex("08011231121D1A1B0A190A0939383736353433323112087AD49366C8D919"
"132002280018022A0C35333631323234343600000030151A208CC3C7D328"
"DFACD43764C9FB582B858C8FF1D9863FF59C4D983478DB858AC32A"),
a2bs_hex(
"0802123B0A190A0939383736353433323112087AD49366C8D91913200228"
a2bs_hex("0802123B0A190A0939383736353433323112087AD49366C8D91913200228"
"0112001A16200342120A106B63746C000000001FF4944E000000002082E7"
"A68F051A2041EF0A9267D613D17AA90E1D1DA5BE091860E5E296D41D6D0F"
"75E73660C279B3"),
@@ -693,17 +678,18 @@ LicenseInfo license_test_data[] = {
"8006240000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E"
"1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F680"
"C12206AA0237760D1F06E5CB78F5AFC3D124BBF7C26921CB3CC2EA44766801E25D34"
"F")}};
"F")}}; // kLicenseTestData
constexpr size_t kNumberOfLicenses = ArraySize(kLicenseTestData);
// Sample license data and related data for storage and use for offline
// playback. The license data and URLs in this test are not real.
// The data is used to test license-related functions.
LicenseInfo license_update_test_data[] = {
const LicenseInfo kLicenseUpdateTestData[] = {
// active license
{"key_set_id_: ksid2A048BC7FAEC885A", DeviceFiles::kLicenseStateActive,
a2bs_hex("0801121030313233343536373839414243444546"),
a2bs_hex(
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
"C4D07A7D5076189EDFB68F05228E023082010A0282010100CC1715C81AD3"
"F6F279C686F826E6D7C8961EB13318367D06B4061BBC57E3C616A226A10F"
"042CAD54D44C6484C725CD721A2A97C088E60AFF0E9C8E03477A1B56B4C5"
@@ -764,8 +750,7 @@ LicenseInfo license_update_test_data[] = {
"EC3AA5881FF433E80838E1E1FA23CE7F22346DDDF7FEC3DB0CE2C3F845CF"
"9471088A022C8D0A63860764AE558BD0B5F66D78881ADBF2D398F9BA349E"
"FB2532C61E243DD45BB11C99422D13A82B7AAE9671"),
a2bs_hex(
"080212CC020A190A09393837363534333231120892BE96420F0D5BF32002"
a2bs_hex("080212CC020A190A09393837363534333231120892BE96420F0D5BF32002"
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
"6E2F64726D2E6367691A661210BB2E2D2B9C39697794897E08262749B41A"
@@ -786,12 +771,10 @@ LicenseInfo license_update_test_data[] = {
"B161F4D198A0279DA19D7001EB2D20C70ABAA04B3760CB165006F6CBA4BE"
"0A2628C0C8398C122FF0DCF9292590E3C37BC7DB20F3B0921268F41FE76B"
"D3EE764EBA13A22FDABC170860503FB93CC4A08D61102519D56A25EB9E30"),
a2bs_hex(
"08011231121D1A1B0A190A09393837363534333231120892BE96420F0D5B"
a2bs_hex("08011231121D1A1B0A190A09393837363534333231120892BE96420F0D5B"
"F32002280018022A0C31393132353333373731000030151A20F4FDBECE54"
"7252D12BB9D488DAD50C76577A2FBCCC73F36D3C6B35096B8A3DC6"),
a2bs_hex(
"0802123B0A190A09393837363534333231120892BE96420F0D5BF3200228"
a2bs_hex("0802123B0A190A09393837363534333231120892BE96420F0D5BF3200228"
"0112001A16200342120A106B63746C0000000071FEF30B0000000020F4DF"
"B68F051A2000351030900858FCFD6977B67803ADFD1280AA661E6B0BD30B"
"08B2C467355129"),
@@ -972,17 +955,17 @@ LicenseInfo license_update_test_data[] = {
"36540EF9BAFCDF8ACD1910148DCFDAFCDF8ACD1910158006230000102030405060708"
"090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2"
"B2C2D2E2F680F12202F5B77A3168AC2A81832231A435D0587F6D1DF3B905A7058C5E8"
"565C81B96CA6")}};
"565C81B96CA6")}}; // kLicenseUpdateTestData
// Application parameters were added to the License message. This data
// is used to verify that a License saved without application parameters can
// be read out correctly by an updated version of the CDM.
LicenseInfo license_app_parameters_backwards_compatibility_test_data = {
const LicenseInfo kLicenseAppParametersBackwardsCompatibilityTestData = {
"ksid54C57C966E23CEF5", DeviceFiles::kLicenseStateActive,
"ksid54C57C966E23CEF5",
DeviceFiles::kLicenseStateActive,
a2bs_hex("0801121030313233343536373839414243444546"),
a2bs_hex(
"080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
a2bs_hex("080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591B"
"C4D07A7D507618A5D3A68F05228E023082010A0282010100A947904B8DBD"
"55FB685FDB3025574517CCCC74EE4FEAF6629D5179A52FF85CE7409528EF"
"FA0E5DFC3DE9A34BA5F08BE349553C319A9FB274905A8770ADC9CA4A2CBC"
@@ -1043,8 +1026,7 @@ LicenseInfo license_app_parameters_backwards_compatibility_test_data = {
"39FA1E7AE925B494B361F6F7116F20BE8EE6E446146027F4FD4300F4A0B0"
"A3361EE34925F338D0AACF20AE919B4BAE81C1D57A8D2B8FA38732A57697"
"C316C180717C182A971C94E4AC4C7DF8F161CB8CC1"),
a2bs_hex(
"080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
a2bs_hex("080212CC020A190A0939383736353433323112084B9F26DAB8B06E112002"
"2800124108011801301E4239687474703A2F2F6B69723033666370673137"
"342E7769646576696E652E6E65742F7769646576696E652F6367692D6269"
"6E2F64726D2E6367691A6612102531DFD6CCEA511D00F8C0172F1189AA1A"
@@ -1065,16 +1047,20 @@ LicenseInfo license_app_parameters_backwards_compatibility_test_data = {
"6294860DFB4F4C42D57D9542B76179E179DD4AA23F9F7B2AE432B39E4CE8"
"F156E84877DDA781AAAAFC797FF75AFE2019ADC3A2E419BF0253C705BD47"
"97A96866AC4C059AD8F2E9C6B617C60C6ADCDB894C25F0C7D29252F52FD5"),
a2bs_hex(
"08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
a2bs_hex("08011231121D1A1B0A190A0939383736353433323112084B9F26DAB8B06E"
"112002280018022A0C31353532333030360000000030151A20C30375683C"
"4D2033E05DCC95DDFB278CFB5125A021C3C043A16ACC933A768A27"),
a2bs_hex(
"0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
a2bs_hex("0802123B0A190A0939383736353433323112084B9F26DAB8B06E11200228"
"0112001A16200342120A106B63746C0000000000ECDCBE0000000020DBDF"
"A68F051A20182F029E35047A3841FA176C74E5B387350E8D58DEA6878FF0"
"BEA6CABACA1C2C"),
"https://test.google.com/license/GetCencLicense", 0x0, 0x0, 0x0, "", "", 0,
"https://test.google.com/license/GetCencLicense",
0x0,
0x0,
0x0,
"",
"",
0,
a2bs_hex(
"0AA8150802100122A1150801121408011210303132333435363738394142434445461"
"A9D0E080112950C0AD70B080112EF090AB002080212103E560EC5335E346F591BC4D0"
@@ -1156,14 +1142,14 @@ LicenseInfo license_app_parameters_backwards_compatibility_test_data = {
"A176C74E5B387350E8D58DEA6878FF0BEA6CABACA1C2C3A2E68747470733A2F2F7465"
"73742E676F6F676C652E636F6D2F6C6963656E73652F47657443656E634C6963656E7"
"365400048001220CD0599C2B85D9F2D573AC7893CE77CB5A10B326828BA8C89047505"
"A8C9B606AC")};
"A8C9B606AC")}; // kLicenseAppParametersBackwardsCompatibilityTestData
struct DeviceFilesTestListUsageInfoData {
std::string file_name;
bool is_usage_info_file;
};
DeviceFilesTestListUsageInfoData kTestListUsageInfoData[] = {
const DeviceFilesTestListUsageInfoData kTestListUsageInfoData[] = {
{"ksid056fe6e9c.lic", false}, {"usage.bin", true},
{"cert.bin", false}, {"usage345agdf==.bin", true},
{"usageyd6e.lic", false}, {"usgtable.bin", false},
@@ -1176,11 +1162,11 @@ struct UsageInfo {
std::string file_data;
};
std::string kEmptyUsageInfoFileData = a2bs_hex(
const std::string kEmptyUsageInfoFileData = a2bs_hex(
"0A06080310012A001220468A9A97B23D0E17147416276CB133175F0A18534155C6FFEF024A"
"D80371D7C4");
UsageInfo kUsageInfoTestData[] = {
const UsageInfo kUsageInfoTestData[] = {
// test vector 0, app id: "", usage entry 0
{"",
{
@@ -1819,9 +1805,9 @@ UsageInfo kUsageInfoTestData[] = {
"E0F5249CD19996DA674E33722902173D45D709914A3D7E898D93170317BFCFF34861C"
"0D687048CC93542A75A2C99B2323FAFEA1EE0C3E3D24EDF263330071220B174821B32"
"5B0A6A900AD8C660C755D3B0273CA6E81D70E2C548CDEC07BE53FA")},
};
}; // kUsageInfoTestData
DeviceFiles::CdmUsageData kUsageInfoUpdateTestData = {
const DeviceFiles::CdmUsageData kUsageInfoUpdateTestData = {
a2bs_hex("b8e7f26b6b83d6b74386d1886d9888bd81fe3241bca928f09407329814ae"
"5a82"),
a2bs_hex("4463dc57079c27e34ae115c6f65b08f6311c4ea604a6512c42470b6f692a"
@@ -1853,7 +1839,7 @@ DeviceFiles::CdmUsageData kUsageInfoUpdateTestData = {
"003b12a3855016c8a03c9a406094d80059ef4ca26f1928fa2a3f0782c72d"
"ba0e2228a70e2e150afb66e305e4bc0b2561ae2b"),
6,
};
}; // kUsageInfoUpdateTestData
struct HlsAttributesInfo {
std::string key_set_id;
@@ -1862,49 +1848,65 @@ struct HlsAttributesInfo {
std::string file_data;
};
HlsAttributesInfo kHlsAttributesTestData[] = {
const HlsAttributesInfo kHlsAttributesTestData[] = {
{
"ksidC8EAA2579A282EB0", kHlsMethodAes128, // hls attributes 0
"ksidC8EAA2579A282EB0",
kHlsMethodAes128, // hls attributes 0
a2bs_hex("F7C4D15BD466BF285E241A4E58638543"),
a2bs_hex("0A1A08041001321408011210F7C4D15BD466BF285E241A4E5863854312201"
"39114B0372FF80FADF92614106E27BE8BD1588B4CAE6E1AEFB7F9C34EA52E"
"CC"),
},
{
"ksidE8C37662C88DC673", kHlsMethodSampleAes, // hls attributes 1
"ksidE8C37662C88DC673",
kHlsMethodSampleAes, // hls attributes 1
a2bs_hex("16413F038088438B5D4CD99F03EBB3D8"),
a2bs_hex("0A1A0804100132140802121016413F038088438B5D4CD99F03EBB3D812205"
"9EA13188B75C55D1EB78B3A65DB3EA3F43BD1B16642266D988E3543943C5F"
"41"),
}};
constexpr size_t kNumberOfHlsAttributes = ArraySize(kHlsAttributesTestData);
// Usage Table and Entry Test Data
// Note: Make sure the number of entries in kUsageEntriesTestData and
// kUsageTableInfoTestData are equal.
CdmUsageEntryInfo kUsageEntriesTestData[] = {
const CdmUsageEntryInfo kUsageEntriesTestData[] = {
// usage entry 0
{
kStorageLicense, "ksid0", "",
kStorageLicense,
"ksid0",
"",
},
// usage entry 1
{
kStorageLicense, "ksid1", "",
kStorageLicense,
"ksid1",
"",
},
// usage entry 2
{
kStorageUsageInfo, "", "app_id_2",
kStorageUsageInfo,
"",
"app_id_2",
},
// usage entry 3
{
kStorageUsageInfo, "", "app_id_3",
kStorageUsageInfo,
"",
"app_id_3",
},
// usage entry 4
{
kStorageLicense, "ksid4", "",
kStorageLicense,
"ksid4",
"",
},
// usage entry 5
{
kStorageUsageInfo, "", "app_id_5",
kStorageUsageInfo,
"",
"app_id_5",
},
};
@@ -1914,7 +1916,7 @@ struct UsageTableTestInfo {
std::string file_data;
};
UsageTableTestInfo kUsageTableInfoTestData[] = {
const UsageTableTestInfo kUsageTableInfoTestData[] = {
// usage table 0
{a2bs_hex("5574517CCC"),
@@ -1962,7 +1964,7 @@ UsageTableTestInfo kUsageTableInfoTestData[] = {
class MockFile : public File {
public:
MockFile() {}
~MockFile() override {}
~MockFile() {}
MOCK_METHOD2(Read, ssize_t(char*, size_t));
MOCK_METHOD2(Write, ssize_t(const char*, size_t));
@@ -2015,11 +2017,11 @@ class DeviceFilesTest : public ::testing::Test {
&device_base_path_));
}
size_t GetLicenseDataSize(LicenseInfo& data) {
size_t GetLicenseDataSize(const LicenseInfo& data) {
CdmAppParameterMap app_parameters = GetAppParameters(data.app_parameters);
size_t app_parameters_len = 0;
CdmAppParameterMap::const_iterator itr = app_parameters.begin();
for (itr = app_parameters.begin(); itr != app_parameters.end(); ++itr) {
for (auto itr = app_parameters.cbegin(); itr != app_parameters.cend();
++itr) {
app_parameters_len += itr->first.length();
app_parameters_len += itr->second.length();
}
@@ -2071,7 +2073,7 @@ class DeviceFilesUsageInfoTest : public DeviceFilesTest,
class DeviceFilesHlsAttributesTest
: public DeviceFilesTest,
public ::testing::WithParamInterface<HlsAttributesInfo*> {};
public ::testing::WithParamInterface<size_t> {};
class DeviceFilesUsageTableTest : public DeviceFilesTest,
public ::testing::WithParamInterface<int> {};
@@ -2268,26 +2270,26 @@ TEST_P(DeviceFilesStoreTest, StoreLicense) {
MockFileSystem file_system;
size_t license_num = 0;
std::string license_path = device_base_path_ +
license_test_data[license_num].key_set_id +
kLicenseTestData[license_num].key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
CdmAppParameterMap app_parameters =
GetAppParameters(license_test_data[license_num].app_parameters);
GetAppParameters(kLicenseTestData[license_num].app_parameters);
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
.WillOnce(Return(file));
EXPECT_CALL(
*file, Write(Contains(license_test_data[license_num].pssh_data,
license_test_data[license_num].key_request,
license_test_data[license_num].key_response,
license_test_data[license_num].key_renewal_request,
license_test_data[license_num].key_renewal_response,
license_test_data[license_num].key_release_url,
app_parameters,
license_test_data[license_num].usage_entry),
Gt(GetLicenseDataSize(license_test_data[license_num]))))
*file,
Write(Contains(kLicenseTestData[license_num].pssh_data,
kLicenseTestData[license_num].key_request,
kLicenseTestData[license_num].key_response,
kLicenseTestData[license_num].key_renewal_request,
kLicenseTestData[license_num].key_renewal_response,
kLicenseTestData[license_num].key_release_url,
app_parameters, kLicenseTestData[license_num].usage_entry),
Gt(GetLicenseDataSize(kLicenseTestData[license_num]))))
.WillOnce(ReturnArg<1>());
EXPECT_CALL(*file, Read(_, _)).Times(0);
@@ -2295,20 +2297,20 @@ TEST_P(DeviceFilesStoreTest, StoreLicense) {
DeviceFiles device_files(&file_system);
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
DeviceFiles::CdmLicenseData license_data{
license_test_data[license_num].key_set_id,
license_test_data[license_num].license_state,
license_test_data[license_num].pssh_data,
license_test_data[license_num].key_request,
license_test_data[license_num].key_response,
license_test_data[license_num].key_renewal_request,
license_test_data[license_num].key_renewal_response,
license_test_data[license_num].key_release_url,
license_test_data[license_num].playback_start_time,
license_test_data[license_num].last_playback_time,
license_test_data[license_num].grace_period_end_time,
kLicenseTestData[license_num].key_set_id,
kLicenseTestData[license_num].license_state,
kLicenseTestData[license_num].pssh_data,
kLicenseTestData[license_num].key_request,
kLicenseTestData[license_num].key_response,
kLicenseTestData[license_num].key_renewal_request,
kLicenseTestData[license_num].key_renewal_response,
kLicenseTestData[license_num].key_release_url,
kLicenseTestData[license_num].playback_start_time,
kLicenseTestData[license_num].last_playback_time,
kLicenseTestData[license_num].grace_period_end_time,
app_parameters,
license_test_data[license_num].usage_entry,
license_test_data[license_num].usage_entry_number};
kLicenseTestData[license_num].usage_entry,
kLicenseTestData[license_num].usage_entry_number};
EXPECT_TRUE(device_files.StoreLicense(license_data, &sub_error_code));
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
}
@@ -2320,26 +2322,26 @@ TEST_F(DeviceFilesTest, StoreLicenses) {
for (size_t i = 0; i < kNumberOfLicenses; ++i) {
std::string license_path = device_base_path_ +
license_test_data[i].key_set_id +
kLicenseTestData[i].key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
CdmAppParameterMap app_parameters =
GetAppParameters(license_test_data[i].app_parameters);
GetAppParameters(kLicenseTestData[i].app_parameters);
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
.WillOnce(Return(file));
EXPECT_CALL(
*file, Write(Contains(license_test_data[i].pssh_data,
license_test_data[i].key_request,
license_test_data[i].key_response,
license_test_data[i].key_renewal_request,
license_test_data[i].key_renewal_response,
license_test_data[i].key_release_url,
app_parameters, license_test_data[i].usage_entry),
Gt(GetLicenseDataSize(license_test_data[i]))))
EXPECT_CALL(*file,
Write(Contains(kLicenseTestData[i].pssh_data,
kLicenseTestData[i].key_request,
kLicenseTestData[i].key_response,
kLicenseTestData[i].key_renewal_request,
kLicenseTestData[i].key_renewal_response,
kLicenseTestData[i].key_release_url,
app_parameters, kLicenseTestData[i].usage_entry),
Gt(GetLicenseDataSize(kLicenseTestData[i]))))
.WillOnce(ReturnArg<1>());
EXPECT_CALL(*file, Read(_, _)).Times(0);
}
@@ -2349,23 +2351,23 @@ TEST_F(DeviceFilesTest, StoreLicenses) {
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
for (size_t i = 0; i < kNumberOfLicenses; i++) {
CdmAppParameterMap app_parameters =
GetAppParameters(license_test_data[i].app_parameters);
GetAppParameters(kLicenseTestData[i].app_parameters);
DeviceFiles::CdmLicenseData license_data{
license_test_data[i].key_set_id,
license_test_data[i].license_state,
license_test_data[i].pssh_data,
license_test_data[i].key_request,
license_test_data[i].key_response,
license_test_data[i].key_renewal_request,
license_test_data[i].key_renewal_response,
license_test_data[i].key_release_url,
license_test_data[i].playback_start_time,
license_test_data[i].last_playback_time,
license_test_data[i].grace_period_end_time,
kLicenseTestData[i].key_set_id,
kLicenseTestData[i].license_state,
kLicenseTestData[i].pssh_data,
kLicenseTestData[i].key_request,
kLicenseTestData[i].key_response,
kLicenseTestData[i].key_renewal_request,
kLicenseTestData[i].key_renewal_response,
kLicenseTestData[i].key_release_url,
kLicenseTestData[i].playback_start_time,
kLicenseTestData[i].last_playback_time,
kLicenseTestData[i].grace_period_end_time,
app_parameters,
license_test_data[i].usage_entry,
license_test_data[i].usage_entry_number};
kLicenseTestData[i].usage_entry,
kLicenseTestData[i].usage_entry_number};
EXPECT_TRUE(device_files.StoreLicense(license_data, &sub_error_code));
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
}
@@ -2376,10 +2378,10 @@ TEST_F(DeviceFilesTest, RetrieveLicenses) {
for (size_t i = 0; i < kNumberOfLicenses; ++i) {
std::string license_path = device_base_path_ +
license_test_data[i].key_set_id +
kLicenseTestData[i].key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
size_t size = license_test_data[i].file_data.size();
size_t size = kLicenseTestData[i].file_data.size();
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
@@ -2392,8 +2394,8 @@ TEST_F(DeviceFilesTest, RetrieveLicenses) {
.WillOnce(Return(file));
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
.WillOnce(
DoAll(SetArrayArgument<0>(license_test_data[i].file_data.begin(),
license_test_data[i].file_data.end()),
DoAll(SetArrayArgument<0>(kLicenseTestData[i].file_data.begin(),
kLicenseTestData[i].file_data.end()),
Return(size)));
EXPECT_CALL(*file, Write(_, _)).Times(0);
}
@@ -2404,25 +2406,25 @@ TEST_F(DeviceFilesTest, RetrieveLicenses) {
DeviceFiles::ResponseType sub_error_code;
for (size_t i = 0; i < kNumberOfLicenses; i++) {
EXPECT_TRUE(device_files.RetrieveLicense(license_test_data[i].key_set_id,
EXPECT_TRUE(device_files.RetrieveLicense(kLicenseTestData[i].key_set_id,
&license_data, &sub_error_code));
EXPECT_EQ(license_test_data[i].key_set_id, license_data.key_set_id);
EXPECT_EQ(license_test_data[i].license_state, license_data.state);
EXPECT_EQ(license_test_data[i].pssh_data, license_data.pssh_data);
EXPECT_EQ(license_test_data[i].key_request, license_data.license_request);
EXPECT_EQ(license_test_data[i].key_response, license_data.license);
EXPECT_EQ(license_test_data[i].key_renewal_request,
EXPECT_EQ(kLicenseTestData[i].key_set_id, license_data.key_set_id);
EXPECT_EQ(kLicenseTestData[i].license_state, license_data.state);
EXPECT_EQ(kLicenseTestData[i].pssh_data, license_data.pssh_data);
EXPECT_EQ(kLicenseTestData[i].key_request, license_data.license_request);
EXPECT_EQ(kLicenseTestData[i].key_response, license_data.license);
EXPECT_EQ(kLicenseTestData[i].key_renewal_request,
license_data.license_renewal_request);
EXPECT_EQ(license_test_data[i].key_renewal_response,
EXPECT_EQ(kLicenseTestData[i].key_renewal_response,
license_data.license_renewal);
EXPECT_EQ(license_test_data[i].playback_start_time,
EXPECT_EQ(kLicenseTestData[i].playback_start_time,
license_data.playback_start_time);
EXPECT_EQ(license_test_data[i].last_playback_time,
EXPECT_EQ(kLicenseTestData[i].last_playback_time,
license_data.last_playback_time);
EXPECT_EQ(license_test_data[i].grace_period_end_time,
EXPECT_EQ(kLicenseTestData[i].grace_period_end_time,
license_data.grace_period_end_time);
EXPECT_EQ(license_test_data[i].usage_entry, license_data.usage_entry);
EXPECT_EQ(license_test_data[i].usage_entry_number,
EXPECT_EQ(kLicenseTestData[i].usage_entry, license_data.usage_entry);
EXPECT_EQ(kLicenseTestData[i].usage_entry_number,
license_data.usage_entry_number);
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
@@ -2430,17 +2432,17 @@ TEST_F(DeviceFilesTest, RetrieveLicenses) {
for (itr = license_data.app_parameters.begin();
itr != license_data.app_parameters.end(); ++itr) {
EXPECT_NE(std::string::npos,
license_test_data[i].app_parameters.find(itr->first));
kLicenseTestData[i].app_parameters.find(itr->first));
EXPECT_NE(std::string::npos,
license_test_data[i].app_parameters.find(itr->second));
kLicenseTestData[i].app_parameters.find(itr->second));
}
}
}
TEST_F(DeviceFilesTest, AppParametersBackwardCompatibility) {
MockFileSystem file_system;
LicenseInfo* test_data =
&license_app_parameters_backwards_compatibility_test_data;
const LicenseInfo* test_data =
&kLicenseAppParametersBackwardsCompatibilityTestData;
std::string license_path = device_base_path_ + test_data->key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
@@ -2488,36 +2490,36 @@ TEST_F(DeviceFilesTest, AppParametersBackwardCompatibility) {
TEST_F(DeviceFilesTest, UpdateLicenseState) {
MockFileSystem file_system;
std::string license_path = device_base_path_ +
license_update_test_data[0].key_set_id +
kLicenseUpdateTestData[0].key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
DeviceFiles device_files(&file_system);
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
for (size_t i = 0; i < ArraySize(license_update_test_data); i++) {
for (size_t i = 0; i < ArraySize(kLicenseUpdateTestData); i++) {
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), IsCreateFileFlagSet()))
.WillOnce(Return(file));
EXPECT_CALL(*file, Write(IsStrEq(license_update_test_data[i].file_data),
Eq(license_update_test_data[i].file_data.size())))
EXPECT_CALL(*file, Write(IsStrEq(kLicenseUpdateTestData[i].file_data),
Eq(kLicenseUpdateTestData[i].file_data.size())))
.WillOnce(ReturnArg<1>());
EXPECT_CALL(*file, Read(_, _)).Times(0);
DeviceFiles::CdmLicenseData license_data{
license_update_test_data[0].key_set_id,
license_update_test_data[i].license_state,
license_update_test_data[0].pssh_data,
license_update_test_data[0].key_request,
license_update_test_data[0].key_response,
license_update_test_data[0].key_renewal_request,
license_update_test_data[0].key_renewal_response,
license_update_test_data[0].key_release_url,
license_update_test_data[0].playback_start_time,
license_update_test_data[0].last_playback_time,
license_update_test_data[0].grace_period_end_time,
GetAppParameters(license_test_data[0].app_parameters),
license_update_test_data[0].usage_entry,
license_update_test_data[0].usage_entry_number};
kLicenseUpdateTestData[0].key_set_id,
kLicenseUpdateTestData[i].license_state,
kLicenseUpdateTestData[0].pssh_data,
kLicenseUpdateTestData[0].key_request,
kLicenseUpdateTestData[0].key_response,
kLicenseUpdateTestData[0].key_renewal_request,
kLicenseUpdateTestData[0].key_renewal_response,
kLicenseUpdateTestData[0].key_release_url,
kLicenseUpdateTestData[0].playback_start_time,
kLicenseUpdateTestData[0].last_playback_time,
kLicenseUpdateTestData[0].grace_period_end_time,
GetAppParameters(kLicenseTestData[0].app_parameters),
kLicenseUpdateTestData[0].usage_entry,
kLicenseUpdateTestData[0].usage_entry_number};
DeviceFiles::ResponseType sub_error_code;
EXPECT_TRUE(device_files.StoreLicense(license_data, &sub_error_code));
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
@@ -2527,10 +2529,10 @@ TEST_F(DeviceFilesTest, UpdateLicenseState) {
TEST_F(DeviceFilesTest, DeleteLicense) {
MockFileSystem file_system;
std::string license_path = device_base_path_ +
license_test_data[0].key_set_id +
kLicenseTestData[0].key_set_id +
DeviceFiles::GetLicenseFileNameExtension();
size_t size = license_test_data[0].file_data.size();
size_t size = kLicenseTestData[0].file_data.size();
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
@@ -2543,9 +2545,8 @@ TEST_F(DeviceFilesTest, DeleteLicense) {
EXPECT_CALL(file_system, DoOpen(StrEq(license_path), _))
.WillOnce(Return(file));
EXPECT_CALL(*file, Read(NotNull(), Eq(size)))
.WillOnce(
DoAll(SetArrayArgument<0>(license_test_data[0].file_data.begin(),
license_test_data[0].file_data.end()),
.WillOnce(DoAll(SetArrayArgument<0>(kLicenseTestData[0].file_data.begin(),
kLicenseTestData[0].file_data.end()),
Return(size)));
EXPECT_CALL(file_system, Remove(StrEq(license_path))).WillOnce(Return(true));
EXPECT_CALL(*file, Write(_, _)).Times(0);
@@ -2555,38 +2556,38 @@ TEST_F(DeviceFilesTest, DeleteLicense) {
DeviceFiles::CdmLicenseData license_data;
DeviceFiles::ResponseType sub_error_code;
EXPECT_TRUE(device_files.RetrieveLicense(license_test_data[0].key_set_id,
EXPECT_TRUE(device_files.RetrieveLicense(kLicenseTestData[0].key_set_id,
&license_data, &sub_error_code));
EXPECT_EQ(license_test_data[0].key_set_id, license_data.key_set_id);
EXPECT_EQ(license_test_data[0].license_state, license_data.state);
EXPECT_EQ(license_test_data[0].pssh_data, license_data.pssh_data);
EXPECT_EQ(license_test_data[0].key_request, license_data.license_request);
EXPECT_EQ(license_test_data[0].key_response, license_data.license);
EXPECT_EQ(license_test_data[0].key_renewal_request,
EXPECT_EQ(kLicenseTestData[0].key_set_id, license_data.key_set_id);
EXPECT_EQ(kLicenseTestData[0].license_state, license_data.state);
EXPECT_EQ(kLicenseTestData[0].pssh_data, license_data.pssh_data);
EXPECT_EQ(kLicenseTestData[0].key_request, license_data.license_request);
EXPECT_EQ(kLicenseTestData[0].key_response, license_data.license);
EXPECT_EQ(kLicenseTestData[0].key_renewal_request,
license_data.license_renewal_request);
EXPECT_EQ(license_test_data[0].key_renewal_response,
EXPECT_EQ(kLicenseTestData[0].key_renewal_response,
license_data.license_renewal);
EXPECT_EQ(license_test_data[0].playback_start_time,
EXPECT_EQ(kLicenseTestData[0].playback_start_time,
license_data.playback_start_time);
EXPECT_EQ(license_test_data[0].last_playback_time,
EXPECT_EQ(kLicenseTestData[0].last_playback_time,
license_data.last_playback_time);
EXPECT_EQ(license_test_data[0].grace_period_end_time,
EXPECT_EQ(kLicenseTestData[0].grace_period_end_time,
license_data.grace_period_end_time);
std::map<std::string, std::string>::iterator itr;
for (itr = license_data.app_parameters.begin();
itr != license_data.app_parameters.end(); ++itr) {
EXPECT_NE(license_test_data[0].app_parameters.find(itr->first),
EXPECT_NE(kLicenseTestData[0].app_parameters.find(itr->first),
std::string::npos);
EXPECT_NE(license_test_data[0].app_parameters.find(itr->second),
EXPECT_NE(kLicenseTestData[0].app_parameters.find(itr->second),
std::string::npos);
}
EXPECT_EQ(license_test_data[0].usage_entry, license_data.usage_entry);
EXPECT_EQ(license_test_data[0].usage_entry_number,
EXPECT_EQ(kLicenseTestData[0].usage_entry, license_data.usage_entry);
EXPECT_EQ(kLicenseTestData[0].usage_entry_number,
license_data.usage_entry_number);
EXPECT_EQ(DeviceFiles::kNoError, sub_error_code);
EXPECT_TRUE(device_files.DeleteLicense(license_test_data[0].key_set_id));
EXPECT_FALSE(device_files.LicenseExists(license_test_data[0].key_set_id));
EXPECT_TRUE(device_files.DeleteLicense(kLicenseTestData[0].key_set_id));
EXPECT_FALSE(device_files.LicenseExists(kLicenseTestData[0].key_set_id));
}
TEST_F(DeviceFilesTest, ReserveLicenseIdsDoesNotUseFileSystem) {
@@ -2597,11 +2598,12 @@ TEST_F(DeviceFilesTest, ReserveLicenseIdsDoesNotUseFileSystem) {
DeviceFiles device_files(&file_system);
EXPECT_TRUE(device_files.Init(kSecurityLevelL1));
for (size_t i = 0; i < kNumberOfLicenses; i++) {
EXPECT_TRUE(device_files.ReserveLicenseId(license_test_data[i].key_set_id));
EXPECT_TRUE(device_files.ReserveLicenseId(kLicenseTestData[i].key_set_id));
// Validate that the license IDs are actually reserved.
EXPECT_TRUE(device_files.LicenseExists(license_test_data[i].key_set_id));
EXPECT_TRUE(device_files.LicenseExists(kLicenseTestData[i].key_set_id));
// Unreserve these IDs to avoid polluting other tests.
EXPECT_TRUE(device_files.UnreserveLicenseId(license_test_data[i].key_set_id));
EXPECT_TRUE(
device_files.UnreserveLicenseId(kLicenseTestData[i].key_set_id));
}
}
@@ -3083,7 +3085,8 @@ TEST_P(DeviceFilesHlsAttributesTest, Read) {
MockFileSystem file_system;
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
HlsAttributesInfo* param = GetParam();
const size_t hls_attribute_index = GetParam();
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
std::string path = device_base_path_ + param->key_set_id +
DeviceFiles::GetHlsAttributesFileNameExtension();
@@ -3113,7 +3116,8 @@ TEST_P(DeviceFilesHlsAttributesTest, Store) {
MockFileSystem file_system;
// Call to Open will return a unique_ptr, freeing this object.
MockFile* file = new MockFile();
HlsAttributesInfo* param = GetParam();
const size_t hls_attribute_index = GetParam();
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
std::string path = device_base_path_ + param->key_set_id +
DeviceFiles::GetHlsAttributesFileNameExtension();
@@ -3134,7 +3138,8 @@ TEST_P(DeviceFilesHlsAttributesTest, Store) {
TEST_P(DeviceFilesHlsAttributesTest, Delete) {
MockFileSystem file_system;
HlsAttributesInfo* param = GetParam();
const size_t hls_attribute_index = GetParam();
const HlsAttributesInfo* param = &kHlsAttributesTestData[hls_attribute_index];
std::string path = device_base_path_ + param->key_set_id +
DeviceFiles::GetHlsAttributesFileNameExtension();
@@ -3146,8 +3151,7 @@ TEST_P(DeviceFilesHlsAttributesTest, Delete) {
}
INSTANTIATE_TEST_CASE_P(HlsAttributes, DeviceFilesHlsAttributesTest,
::testing::Range(&kHlsAttributesTestData[0],
&kHlsAttributesTestData[2]));
::testing::Range<size_t>(0, kNumberOfHlsAttributes));
TEST_P(DeviceFilesUsageTableTest, Store) {
MockFileSystem file_system;

View File

@@ -442,6 +442,8 @@ std::string InsertHlsAttributeInList(const std::string key,
"=" + kHlsTestValue2;
}
} // namespace
struct HlsInitDataVariant {
HlsInitDataVariant(CdmHlsMethod method, const std::string& provider,
const std::string& content_id, const std::string& key_id,
@@ -499,7 +501,6 @@ class HlsParseTest : public ::testing::TestWithParam<HlsAttributeVariant> {};
class HlsTest : public ::testing::Test {};
} // namespace
TEST_F(InitializationDataTest, BadType) {
InitializationData init_data("bad", kWidevinePssh);