summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-03-21 06:31:15 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-03-21 06:31:15 -0700
commit52689090755c8535b4764d8991e9d9d5b3264c5e (patch)
tree8c89c482a91a4211206282a462e01c91a4d7aa9c /controller
parentc62141fd9870eabf6f987da8e2a82ff5a999ddcf (diff)
downloadinfinitytier-52689090755c8535b4764d8991e9d9d5b3264c5e.tar.gz
infinitytier-52689090755c8535b4764d8991e9d9d5b3264c5e.zip
Add a facility for full flow-through uptime test of controller by Central.
Diffstat (limited to 'controller')
-rw-r--r--controller/EmbeddedNetworkController.cpp11
-rw-r--r--controller/EmbeddedNetworkController.hpp23
2 files changed, 22 insertions, 12 deletions
diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp
index 0e704288..51500ed7 100644
--- a/controller/EmbeddedNetworkController.cpp
+++ b/controller/EmbeddedNetworkController.cpp
@@ -429,6 +429,7 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule)
}
EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *dbPath) :
+ _startTime(OSUtils::now()),
_threadsStarted(false),
_db(dbPath),
_node(node)
@@ -1067,7 +1068,15 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpPOST(
} // else 404
- } // else 404
+ } else if (path[0] == "dbtest") {
+
+ json testRec;
+ const uint64_t now = OSUtils::now();
+ testRec["clock"] = now;
+ testRec["uptime"] = (now - _startTime);
+ _db.put("dbtest",testRec);
+
+ }
return 404;
}
diff --git a/controller/EmbeddedNetworkController.hpp b/controller/EmbeddedNetworkController.hpp
index 5d2454ed..0ae2f3b5 100644
--- a/controller/EmbeddedNetworkController.hpp
+++ b/controller/EmbeddedNetworkController.hpp
@@ -98,9 +98,6 @@ public:
throw();
private:
- static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report);
- void _request(uint64_t nwid,const InetAddress &fromAddr,uint64_t requestPacketId,const Identity &identity,const Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> &metaData);
-
struct _RQEntry
{
uint64_t nwid;
@@ -109,11 +106,6 @@ private:
Identity identity;
Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> metaData;
};
- BlockingQueue<_RQEntry *> _queue;
-
- Thread _threads[ZT_EMBEDDEDNETWORKCONTROLLER_BACKGROUND_THREAD_COUNT];
- bool _threadsStarted;
- Mutex _threads_m;
// Gathers a bunch of statistics about members of a network, IP assignments, etc. that we need in various places
struct _NetworkMemberInfo
@@ -127,12 +119,11 @@ private:
uint64_t mostRecentDeauthTime;
uint64_t nmiTimestamp; // time this NMI structure was computed
};
- std::map<uint64_t,_NetworkMemberInfo> _nmiCache;
- Mutex _nmiCache_m;
+ static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report);
+ void _request(uint64_t nwid,const InetAddress &fromAddr,uint64_t requestPacketId,const Identity &identity,const Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> &metaData);
void _getNetworkMemberInfo(uint64_t now,uint64_t nwid,_NetworkMemberInfo &nmi);
inline void _clearNetworkMemberInfoCache(const uint64_t nwid) { Mutex::Lock _l(_nmiCache_m); _nmiCache.erase(nwid); }
-
void _pushMemberUpdate(uint64_t now,uint64_t nwid,const nlohmann::json &member);
// These init objects with default and static/informational fields
@@ -188,6 +179,16 @@ private:
member["clock"] = now;
}
+ const uint64_t _startTime;
+
+ BlockingQueue<_RQEntry *> _queue;
+ Thread _threads[ZT_EMBEDDEDNETWORKCONTROLLER_BACKGROUND_THREAD_COUNT];
+ bool _threadsStarted;
+ Mutex _threads_m;
+
+ std::map<uint64_t,_NetworkMemberInfo> _nmiCache;
+ Mutex _nmiCache_m;
+
JSONDB _db;
Mutex _db_m;