blob: db1b69fda77545b0ccf9578d77f6e72d29111026 [file] [log] [blame]
// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdio.h>
#include <gtest/gtest.h>
extern "C" {
#include "cras_server_metrics.c"
#include "cras_main_message.h"
}
static enum CRAS_MAIN_MESSAGE_TYPE type_set;
static struct cras_server_metrics_message *sent_msg;
void ResetStubData() {
type_set = (enum CRAS_MAIN_MESSAGE_TYPE)0;
}
namespace {
TEST(ServerMetricsTestSuite, Init) {
ResetStubData();
cras_server_metrics_init();
EXPECT_EQ(type_set, CRAS_MAIN_METRICS);
}
TEST(ServerMetricsTestSuite, SetMetrics) {
ResetStubData();
unsigned int delay = 100;
sent_msg = (struct cras_server_metrics_message *)calloc(1, sizeof(*sent_msg));
cras_server_metrics_longest_fetch_delay(delay);
EXPECT_EQ(sent_msg->header.type, CRAS_MAIN_METRICS);
EXPECT_EQ(sent_msg->header.length, sizeof(*sent_msg));
EXPECT_EQ(sent_msg->metrics_type, LONGEST_FETCH_DELAY);
EXPECT_EQ(sent_msg->data, delay);
free(sent_msg);
}
extern "C" {
int cras_main_message_add_handler(enum CRAS_MAIN_MESSAGE_TYPE type,
cras_message_callback callback,
void *callback_data) {
type_set = type;
return 0;
}
void cras_metrics_log_histogram(const char *name, int sample, int min,
int max, int nbuckets) {
}
int cras_main_message_send(struct cras_main_message *msg) {
// Copy the sent message so we can examine it in the test later.
memcpy(sent_msg, msg, sizeof(*sent_msg));
return 0;
};
} // extern "C"
} // namespace
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
int rc = RUN_ALL_TESTS();
return rc;
}