Source release v3.0.0-0-g8d3792b-ce + third_party
Change-Id: I399e71ddfffcd436171d1c60283c63ab4658e0b1
This commit is contained in:
@@ -1,96 +1,87 @@
|
||||
// Copyright 2014 Google Inc. All Rights Reserved.
|
||||
|
||||
#include "cdm_test_config.h"
|
||||
// Copyright 2015 Google Inc. All Rights Reserved.
|
||||
|
||||
#include <assert.h>
|
||||
#include <getopt.h>
|
||||
#include <gtest/gtest.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "string_conversions.h"
|
||||
#if defined(__linux__)
|
||||
#include <sys/utsname.h>
|
||||
#endif
|
||||
|
||||
// Default license server, can be configured using --server command line option
|
||||
// Default key id (pssh), can be configured using --keyid command line option
|
||||
std::string g_client_auth;
|
||||
std::string g_key_id;
|
||||
std::string g_license_server;
|
||||
std::string g_wrong_key_id;
|
||||
#include "cdm.h"
|
||||
#include "device_cert.h"
|
||||
#include "override.h"
|
||||
#include "test_host.h"
|
||||
|
||||
#if defined(OEMCRYPTO_TESTS)
|
||||
# include "oemcrypto_test.h"
|
||||
#endif
|
||||
|
||||
using namespace widevine;
|
||||
|
||||
TestHost* g_host = NULL;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
// Init gtest and let it consume arguments.
|
||||
::testing::InitGoogleTest(&argc, argv);
|
||||
wvcdm::InitLogging(argc, argv);
|
||||
|
||||
wvcdm::ConfigTestEnv config(kLicenseServerId);
|
||||
g_client_auth.assign(config.client_auth());
|
||||
g_wrong_key_id.assign(config.wrong_key_id());
|
||||
|
||||
// The following variables are configurable through command line options.
|
||||
g_license_server.assign(config.license_server());
|
||||
g_key_id.assign(config.key_id());
|
||||
std::string license_server(g_license_server);
|
||||
|
||||
// Parse arguments.
|
||||
int show_usage = 0;
|
||||
static const struct option long_options[] = {
|
||||
{"keyid", required_argument, NULL, 'k'},
|
||||
{"server", required_argument, NULL, 's'},
|
||||
{NULL, 0, NULL, '\0'}};
|
||||
|
||||
int option_index = 0;
|
||||
int opt = 0;
|
||||
while ((opt = getopt_long(argc, argv, "k:s:v", long_options,
|
||||
&option_index)) != -1) {
|
||||
int opt;
|
||||
int verbosity = 0;
|
||||
while ((opt = getopt_long(argc, argv, "v", NULL, NULL)) != -1) {
|
||||
switch (opt) {
|
||||
case 'k': {
|
||||
g_key_id.clear();
|
||||
g_key_id.assign(optarg);
|
||||
case 'v':
|
||||
++verbosity;
|
||||
break;
|
||||
}
|
||||
case 's': {
|
||||
g_license_server.clear();
|
||||
g_license_server.assign(optarg);
|
||||
break;
|
||||
}
|
||||
case 'v': {
|
||||
// This option has already been consumed by wvcdm::InitLogging() above.
|
||||
// We only tell getopt about it so that it is not an error. We ignore
|
||||
// the option here when seen.
|
||||
// TODO: Stop passing argv to InitLogging, and instead set the log
|
||||
// level here through the logging API. We should keep all command-line
|
||||
// parsing at the application level, rather than split between various
|
||||
// apps and various platform-specific logging implementations.
|
||||
break;
|
||||
}
|
||||
case '?': {
|
||||
case '?':
|
||||
show_usage = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (show_usage) {
|
||||
std::cout << std::endl;
|
||||
std::cout << "usage: " << argv[0] << " [options]" << std::endl << std::endl;
|
||||
|
||||
std::cout << std::setw(30) << std::left << " --server=<server_url>";
|
||||
std::cout
|
||||
<< "configure the license server url, please include http[s] in the url"
|
||||
<< std::endl;
|
||||
std::cout << std::setw(30) << std::left << " ";
|
||||
std::cout << "default: " << license_server << std::endl;
|
||||
|
||||
std::cout << std::setw(30) << std::left << " --keyid=<key_id>";
|
||||
std::cout << "configure the key id or pssh, in hex format" << std::endl;
|
||||
std::cout << std::setw(30) << std::left << " default keyid:";
|
||||
std::cout << g_key_id << std::endl;
|
||||
fprintf(stderr, "Usage: %s [-v|-vv|-vvv]\n\n", argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::cout << std::endl;
|
||||
std::cout << "Server: " << g_license_server << std::endl;
|
||||
std::cout << "KeyID: " << g_key_id << std::endl << std::endl;
|
||||
// Set up a Host so that tests and initialize the library. This makes these
|
||||
// services available to the tests. We would do this in the test suite
|
||||
// itself, but the core & OEMCrypto tests don't know they depend on this
|
||||
// for storage.
|
||||
g_host = new TestHost();
|
||||
Cdm::ClientInfo client_info;
|
||||
// Set client info that denotes this as the test suite:
|
||||
client_info.product_name = "CE cdm tests";
|
||||
client_info.company_name = "www";
|
||||
client_info.model_name = "www";
|
||||
#if defined(__linux__)
|
||||
client_info.device_name = "Linux";
|
||||
{
|
||||
struct utsname name;
|
||||
if (uname(&name) == 0) {
|
||||
client_info.arch_name = name.machine;
|
||||
}
|
||||
}
|
||||
#else
|
||||
client_info.device_name = "unknown";
|
||||
#endif
|
||||
client_info.build_info = __DATE__;
|
||||
|
||||
g_key_id = wvcdm::a2bs_hex(g_key_id);
|
||||
config.set_license_server(g_license_server);
|
||||
config.set_key_id(g_key_id);
|
||||
Cdm::DeviceCertificateRequest cert_request;
|
||||
Cdm::Status status = Cdm::initialize(
|
||||
Cdm::kNoSecureOutput, client_info, g_host, g_host, g_host, &cert_request,
|
||||
static_cast<Cdm::LogLevel>(verbosity));
|
||||
assert(status == Cdm::kSuccess);
|
||||
assert(cert_request.needed == false);
|
||||
|
||||
#if defined(OEMCRYPTO_TESTS)
|
||||
// Set up the OEMCrypto test harness.
|
||||
wvoec::global_features.Initialize(false /* is_cast_receiver */,
|
||||
false /* force_load_test_keybox */);
|
||||
::testing::GTEST_FLAG(filter)
|
||||
= wvoec::global_features.RestrictFilter(::testing::GTEST_FLAG(filter));
|
||||
#endif
|
||||
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user