~ubuntu-branches/ubuntu/trusty/libusermetrics/trusty-proposed

« back to all changes in this revision

Viewing changes to tests/unit/libusermetricsinput/TestMetricManagerImpl.cpp

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release, Pete Woods, Ubuntu daily release
  • Date: 2013-07-02 02:02:52 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130702020252-53yuhnlabsq1cq8x
Tags: 1.0.1+13.10.20130702-0ubuntu1
[ Pete Woods ]
* Implement most of storage service and wire up input API.
* Wire up the output API to the storage service.

[ Ubuntu daily release ]
* Automatic snapshot from revision 80

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 */
18
18
 
19
19
#include <libusermetricsinput/MetricManagerImpl.h>
 
20
#include <libusermetricscommon/UserMetricsInterface.h>
 
21
#include <libusermetricscommon/UserDataInterface.h>
 
22
#include <libusermetricscommon/DataSetInterface.h>
 
23
#include <libusermetricscommon/DataSourceInterface.h>
 
24
#include <libusermetricscommon/DBusPaths.h>
 
25
 
 
26
#include <QtCore/QDebug>
 
27
 
 
28
#include <testutils/DBusTest.h>
 
29
#include <testutils/QStringPrinter.h>
20
30
 
21
31
#include <gtest/gtest.h>
22
32
#include <gmock/gmock.h>
23
33
 
24
34
using namespace std;
25
35
using namespace testing;
 
36
using namespace UserMetricsCommon;
26
37
using namespace UserMetricsInput;
 
38
using namespace UserMetricsTestUtils;
27
39
 
28
40
namespace {
29
41
 
30
 
class TestMetricManagerImpl: public Test {
 
42
class TestMetricManagerImpl: public DBusTest {
31
43
protected:
32
44
        TestMetricManagerImpl() {
33
45
        }
36
48
        }
37
49
};
38
50
 
39
 
TEST_F(TestMetricManagerImpl, Foo) {
40
 
        MetricManagerPtr manager(new MetricManagerImpl());
 
51
TEST_F(TestMetricManagerImpl, TestCanAddDataSourceMultipleTimes) {
 
52
        com::canonical::UserMetrics userMetricsInterface(DBusPaths::serviceName(),
 
53
                        DBusPaths::userMetrics(), *connection);
 
54
        {
 
55
                QList<QDBusObjectPath> dataSources = userMetricsInterface.dataSources();
 
56
                EXPECT_TRUE(dataSources.empty());
 
57
        }
 
58
 
 
59
        {
 
60
                MetricManagerPtr manager(new MetricManagerImpl(*connection));
 
61
                MetricPtr metric(manager->add("data-source-id", "format string %1"));
 
62
        }
 
63
 
 
64
        {
 
65
                MetricManagerPtr manager(new MetricManagerImpl(*connection));
 
66
                MetricPtr metric(manager->add("data-source-id", "format string %1"));
 
67
        }
 
68
 
 
69
        {
 
70
                QList<QDBusObjectPath> dataSources = userMetricsInterface.dataSources();
 
71
                ASSERT_EQ(1, dataSources.size());
 
72
                EXPECT_EQ(DBusPaths::dataSource(1), dataSources.first().path());
 
73
        }
 
74
 
 
75
        com::canonical::usermetrics::DataSource dataSourceInterface(
 
76
                        DBusPaths::serviceName(), DBusPaths::dataSource(1), *connection);
 
77
        QString name(dataSourceInterface.name());
 
78
        EXPECT_EQ(QString("data-source-id"), name);
 
79
}
 
80
 
 
81
TEST_F(TestMetricManagerImpl, TestCanAddDataAndUpdate) {
 
82
        MetricManagerPtr manager(new MetricManagerImpl(*connection));
41
83
 
42
84
        MetricPtr metric(manager->add("data-source-id", "format string %1"));
43
85
 
44
 
        MetricUpdatePtr update(metric->update("username"));
45
 
        update->addData(1.0);
46
 
        update->addNull();
47
 
        update->addData(0.1);
 
86
        {
 
87
                MetricUpdatePtr update(metric->update("the-username"));
 
88
                update->addData(100.0);
 
89
                update->addNull();
 
90
                update->addData(-50.0);
 
91
                update->addData(-22.0);
 
92
        }
 
93
 
 
94
        com::canonical::usermetrics::UserData userDataInterface(
 
95
                        DBusPaths::serviceName(), DBusPaths::userData(1), *connection);
 
96
        EXPECT_EQ(QString("the-username"), userDataInterface.username());
 
97
 
 
98
        com::canonical::usermetrics::DataSet dataSetInterface(
 
99
                        DBusPaths::serviceName(), DBusPaths::dataSet(1), *connection);
 
100
        QVariantList data(dataSetInterface.data());
 
101
        EXPECT_FLOAT_EQ(100.0, data.at(0).toDouble());
 
102
        EXPECT_EQ(QString(""), data.at(1).toString());
 
103
        EXPECT_FLOAT_EQ(-50.0, data.at(2).toDouble());
 
104
        EXPECT_FLOAT_EQ(-22.0, data.at(3).toDouble());
 
105
 
 
106
        QDateTime dateTime(QDateTime::fromTime_t(dataSetInterface.lastUpdated()));
 
107
        EXPECT_EQ(QDate::currentDate(), dateTime.date());
 
108
}
 
109
 
 
110
TEST_F(TestMetricManagerImpl, TestAddMultipleDataSourcesAndUsers) {
 
111
        MetricManagerPtr manager(new MetricManagerImpl(*connection));
 
112
 
 
113
        MetricPtr metricOne(
 
114
                        manager->add("data-source-one", "format string one %1"));
 
115
        MetricPtr metricTwo(
 
116
                        manager->add("data-source-two", "format string two %1"));
 
117
 
 
118
        {
 
119
                MetricUpdatePtr updateOne(metricOne->update("the-username-one"));
 
120
                updateOne->addData(100.0);
 
121
                MetricUpdatePtr updateTwo(metricOne->update("the-username-two"));
 
122
                updateTwo->addData(75.0);
 
123
 
 
124
                MetricUpdatePtr updateThree(metricTwo->update("the-username-one"));
 
125
                updateThree->addData(50.0);
 
126
                MetricUpdatePtr updateFour(metricTwo->update("the-username-two"));
 
127
                updateFour->addData(25.0);
 
128
        }
 
129
 
 
130
        com::canonical::usermetrics::UserData userDataInterfaceOne(
 
131
                        DBusPaths::serviceName(), DBusPaths::userData(1), *connection);
 
132
        EXPECT_EQ(QString("the-username-one"), userDataInterfaceOne.username());
 
133
        com::canonical::usermetrics::UserData userDataInterfaceTwo(
 
134
                        DBusPaths::serviceName(), DBusPaths::userData(2), *connection);
 
135
        EXPECT_EQ(QString("the-username-two"), userDataInterfaceTwo.username());
 
136
 
 
137
        com::canonical::usermetrics::DataSet dataSetInterfaceOne(
 
138
                        DBusPaths::serviceName(), DBusPaths::dataSet(1), *connection);
 
139
        QVariantList dataOne(dataSetInterfaceOne.data());
 
140
        EXPECT_FLOAT_EQ(100.0, dataOne.first().toDouble());
 
141
 
 
142
        com::canonical::usermetrics::DataSet dataSetInterfaceTwo(
 
143
                        DBusPaths::serviceName(), DBusPaths::dataSet(2), *connection);
 
144
        QVariantList dataTwo(dataSetInterfaceTwo.data());
 
145
        EXPECT_FLOAT_EQ(75.0, dataTwo.first().toDouble());
 
146
 
 
147
        com::canonical::usermetrics::DataSet dataSetInterfaceThree(
 
148
                        DBusPaths::serviceName(), DBusPaths::dataSet(3), *connection);
 
149
        QVariantList dataThree(dataSetInterfaceThree.data());
 
150
        EXPECT_FLOAT_EQ(50.0, dataThree.first().toDouble());
 
151
 
 
152
        com::canonical::usermetrics::DataSet dataSetInterfaceFour(
 
153
                        DBusPaths::serviceName(), DBusPaths::dataSet(4), *connection);
 
154
        QVariantList dataFour(dataSetInterfaceFour.data());
 
155
        EXPECT_FLOAT_EQ(25.0, dataFour.first().toDouble());
48
156
}
49
157
 
50
158
} // namespace