Jason-HedaZhao / ndt

Automatically exported from code.google.com/p/ndt
Other
0 stars 0 forks source link

Clean up and modularize the NDT server codebase #139

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
It would be great to clean up and modularize the NDT server codebase, 
especially with regard to having it more easily support new protocols and/or 
tests.

Original issue reported on code.google.com by jslawin...@soldevelo.com on 25 Mar 2014 at 8:56

GoogleCodeExporter commented 9 years ago

Original comment by skost...@soldevelo.com on 31 Mar 2014 at 5:21

GoogleCodeExporter commented 9 years ago
Could you provide more information about how modularization should look like?

Original comment by skost...@soldevelo.com on 9 Apr 2014 at 8:57

GoogleCodeExporter commented 9 years ago
Added document describing required changes to be made on server's side to add 
new test.

Original comment by skost...@soldevelo.com on 16 Apr 2014 at 11:56

Attachments:

GoogleCodeExporter commented 9 years ago
From Aaron's mail:

My preference would be to focus on code readability, and to clean up the web100 
handling a bit as part of that. The main web100srv.c is almost unreadable. 
It’d be good to try to separate out the ‘child’ handling from the test 
scheduling, and the ‘parent’ handling. As a simple example, the single 
‘cleanup’ function that handles all signals for all processes, no matter 
what, makes no sense. The amount of ‘global’ variables needs to be pared 
back considerably to ensure that the logic of the workflow is more 
straight-forward.

Related to that, it’d be nice to modularize the web100/10g work to make it 
cleaner, especially for including things like tcp_info. e.g. have the test 
functions fill out generic tcp statistics that are opaque to the “child” 
handler, and have some functions that take the generic tcp statistics objects 
from the tests, and based on web10g, web100, or tcp_info, fill out the NDT 
expected response values (e.g. the c2sspd variable)

I’m vaguely envisioning something like:

foreach test in tests_to_perform():
    test.results = run_test(test)

ndt_results = build_ndt_results(tests)

I’m envisioning that ndt_results object would have all the individual 
elements 

The build_ndt_results function then might look like:

     results.rtt = calculate_rtt(tests[’s2c_results’])

and then the protocol handling takes that “results” object, and spits it 
out.

Original comment by jslawin...@soldevelo.com on 7 May 2014 at 11:57

GoogleCodeExporter commented 9 years ago
To sum up, this ticket includes the following tasks:

 1. Separate the specific protocol from the general scheduling/testing frameworks
 2. Make it easier to add a new/modified test

The starting point of this work should be changes from the 
aaron-tcp_stats_cleanup branch.

Original comment by jslawin...@soldevelo.com on 7 May 2014 at 12:04

GoogleCodeExporter commented 9 years ago

Original comment by jslawin...@soldevelo.com on 25 Jun 2014 at 8:34