Просмотр исходного кода

Add a facility for full flow-through uptime test of controller by Central.

Adam Ierymenko 8 лет назад
Родитель
Сommit
5268909075
2 измененных файлов с 22 добавлено и 12 удалено
  1. 10 1
      controller/EmbeddedNetworkController.cpp
  2. 12 11
      controller/EmbeddedNetworkController.hpp

+ 10 - 1
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;
 }

+ 12 - 11
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;