]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/proflogger: test JSON formatting a bit
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Mon, 18 Jul 2011 23:49:04 +0000 (16:49 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Mon, 18 Jul 2011 23:49:04 +0000 (16:49 -0700)
Test JSON formatting a bit. Use single quotes in our JSON because that
seems to make things easier.

Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/common/ProfLogger.cc
src/test/proflogger.cc

index 093a875db3b25ff06de1ff336d844b851bdbf1cd..4d3fde5abf429f007374936875d5c4a8600246ae 100644 (file)
@@ -259,7 +259,6 @@ private:
     {
       Mutex::Locker lck(m_parent->m_lock); // Take lock to access m_loggers
       buffer.push_back('{');
-      buffer.push_back(' ');
       for (std::set <ProfLogger*>::iterator l = m_parent->m_loggers.begin();
           l != m_parent->m_loggers.end(); ++l)
       {
@@ -522,13 +521,13 @@ write_json_to_buf(std::vector <char> &buffer)
     if (d->count != COUNT_DISABLED) {
       switch (d->type) {
        case PROF_LOG_DATA_ANY_U64:
-         snprintf(buf, sizeof(buf), "\"%s\" : { \"count\" : %" PRId64 ", "
-                 "\"sum\" : %" PRId64 " },\n", 
+         snprintf(buf, sizeof(buf), "'%s':{'count':%" PRId64 ","
+                 "'sum':%" PRId64 "},", 
                  data.name, data.count, data.u.u64);
          break;
        case PROF_LOG_DATA_ANY_DOUBLE:
-         snprintf(buf, sizeof(buf), "\"%s\" : { \"count\" : %" PRId64 ", "
-                 "\"sum\" : %g },\n",
+         snprintf(buf, sizeof(buf), "'%s':{'count':%" PRId64 ","
+                 "'sum':%g},",
                  data.name, data.count, data.u.dbl);
          break;
        default:
@@ -539,11 +538,11 @@ write_json_to_buf(std::vector <char> &buffer)
     else {
       switch (d->type) {
        case PROF_LOG_DATA_ANY_U64:
-         snprintf(buf, sizeof(buf), "\"%s\" : %" PRId64 ",\n",
+         snprintf(buf, sizeof(buf), "'%s':%" PRId64 ",",
                   data.name, data.u.u64);
          break;
        case PROF_LOG_DATA_ANY_DOUBLE:
-         snprintf(buf, sizeof(buf), "\"%s\" : %g,\n", data.name, data.u.dbl);
+         snprintf(buf, sizeof(buf), "'%s':%g,", data.name, data.u.dbl);
          break;
        default:
          assert(0);
index 0a4213219d6196d262113fa25505efc4d0e062ea..1691c3e8ca5d100971e33435569d4d2e5ad49a40 100644 (file)
@@ -141,7 +141,7 @@ public:
       return oss.str();
     }
 
-    printf("MESSAGE FROM SERVER: %s\n", buffer);
+    //printf("MESSAGE FROM SERVER: %s\n", buffer);
     message->assign((const char*)buffer);
     close(socket_fd);
     return "";
@@ -164,12 +164,41 @@ TEST(ProfLogger, TeardownSetup) {
 }
 
 TEST(ProfLogger, SimpleTest) {
-
   ProfLoggerCollectionTest plct(g_ceph_context->GetProfLoggerCollection());
   ASSERT_EQ(true, plct.shutdown());
   ASSERT_EQ(true, plct.init(get_socket_path()));
   ProfLoggerTestClient test_client(get_socket_path());
   std::string message;
   ASSERT_EQ("", test_client.get_message(&message));
-  ASSERT_EQ("{ }", message);
+  ASSERT_EQ("{}", message);
+}
+
+enum {
+  FAKE_PROFLOGGER1_ELEMENT_FIRST = 200,
+  FAKE_PROFLOGGER1_ELEMENT_1,
+  FAKE_PROFLOGGER1_ELEMENT_2,
+  FAKE_PROFLOGGER1_ELEMENT_3,
+  FAKE_PROFLOGGER1_ELEMENT_LAST,
+};
+
+static ProfLogger* setup_fake_proflogger1(CephContext *cct)
+{
+  ProfLoggerBuilder bld(cct, "fake_proflogger_1",
+         FAKE_PROFLOGGER1_ELEMENT_FIRST, FAKE_PROFLOGGER1_ELEMENT_LAST);
+  bld.add_u64(FAKE_PROFLOGGER1_ELEMENT_1, "element1");
+  bld.add_fl(FAKE_PROFLOGGER1_ELEMENT_2, "element2");
+  bld.add_fl_avg(FAKE_PROFLOGGER1_ELEMENT_3, "element3");
+  return bld.create_proflogger();
+}
+
+TEST(ProfLogger, FakeProflogger1) {
+  ProfLoggerCollection *coll = g_ceph_context->GetProfLoggerCollection();
+  coll->logger_add(setup_fake_proflogger1(g_ceph_context));
+  ProfLoggerCollectionTest plct(coll);
+  ASSERT_EQ(true, plct.shutdown());
+  ASSERT_EQ(true, plct.init(get_socket_path()));
+  ProfLoggerTestClient test_client(get_socket_path());
+  std::string message;
+  ASSERT_EQ("", test_client.get_message(&message));
+  ASSERT_EQ("{'element1':0,'element2':0,'element3':{'count':0,'sum':0},}", message);
 }