Added initial implementation (untested) of code (controlled by REST API)
for measuring the performance of writing Flow state to the Network MAP.

Currently, the semantics are:
1. Call multiple times the following REST call to store internally
   each flow:
   http://localhost:8080/wm/flow/measurement-store-path/json

   Each call is similar to the "add-shortest-path" REST call
   when adding a regular flow: the JSON object contains the endpoints
   and the match conditions.

   The "measurement-store-path" Flow is stored internally and will
   be used later for measurement purpose.

2. Use the following REST call to start the measurements:

   http://localhost:8080/wm/flow/measurement-install-paths/{num-threads}/json

   The "num-threads" argument is used to specify how many threads should
   be used to install the measurement flows.

3. Use the following REST call to obtain how long time (in nanoseconds)
   it took to install the measurement flows in the Network MAP:

   http://localhost:8080/wm/flow/measurement-get-install-paths-time-nsec/json

4. Use the following REST call to clear the measurement flows that
   were stored internally in Step 1:

   http://localhost:8080/wm/flow/measurement-clear-all-paths/json

Note that in Step 4 the installed Flows are NOT deleted from the
Network MAP.

NOTE: Step (2) and (3) can be repeated multiple times (e.g., for a different
number of theads) for the same set of Flows that were stored in Step (1).
However, it might be desirable that Step (3) is followed by an explicit
deletion of the installed Flows from the Network MAP (and the switches).
7 files changed