= Code = Code resides in assign+ branch of the repository, in assign+ folder. There are three files: * '''assign+''' * PURPOSE: reads resource requirements and available resources and finds an allocation with minimum interswitch bw use * INPUT: two command line arguments ''ptopfile'' and ''topfile''. These files are usually produced in the process of resource assignment by assign_wrapper, now called mapper. There are a few other command line options, that should be self-explanatory when you run the code. If you want very verbose output run it with -d. * OUTPUT: textual output denoting nodes and links and their assignments that can be passed further to resource allocation * '''getptopdetail.pl''' * PURPOSE: parse a ''ptopfile'' into something human-readable. Assign+ also uses this output. * INPUT: ''ptopfile'' * OUTPUT: human-readable summary of ''ptopfile'' * '''gettopdetail.pl''' * PURPOSE: parse a ''topfile'' into something human-readable. Assign+ also uses this output. * INPUT: ''topfile'' * OUTPUT: human-readable summary of ''topfile'' = Testing = Testing code resides in assign+ branch of the repository, in assign+/test folder. There are several files that jointly perform tests that compare performance of ''assign'' and ''assign+''. * '''removefixed.pl''' * PURPOSE: Remove fixed nodes from a ''topfile'' * INPUT: ''topfile'' * OUTPUT: ''topfile'' in correct format minus lines that talk about fixed nodes * '''makefixed.pl''' * PURPOSE: Make a ''topfile'' with fixed nodes taken from the output of ''assign'' or ''assign+'' * INPUT: output-file-of-assign-or-assign+ ''topfile'' * OUTPUT: ''topfile'' in correct format plus lines that enforce fixed nodes and fixed interfaces for links * '''parseinfo.pl''' * PURPOSE: measure performance of ''assign'' or ''assign+'' * INPUT: a file containing output of ''assign'' or ''assign+'' * OUTPUT: success or failure of allocation, time the allocation took, number of nodes and interswitch links allocated * '''runtests.pl''' * PURPOSE: run a number of tests with ''assign'' and ''assign+'' * INPUT: a file containing lines with ''ptopfile'' and ''topfile'' * OUTPUT: file ''testresults'' that contains performance of these two allocation algorithms for each line of input * '''processresults.pl''' * PURPOSE: process the results file generated in the previous step * INPUT: name of the results file * OUTPUT: statistics about successes and failures of ''assign'' and ''assign+''. The code also produces files that contain inputs that lead to following potentially anomalous cases: * ''checktests'' - ''assign+'' failed and ''assign'' didn't * ''failedtests'' - both ''assign+'' and ''assign'' failed * ''weirdtests'' - ''assign+'' succeeded and ''assign'' didn't * ''impossibletests'' - ''assign+'' succeeded and ''assign'' didn't with fixed nodes from output of ''assign+''. This most often happens because ''assign+'' cannot deal properly with fixed interfaces on links. Additionally, the folder contains a version of ''assign'' I have used in testing, that will run on boss. It also contains two sets of test cases: * ''expinfotests'' - all attempted allocations from start of DeterLab until Spring 2013 * ''expfailedtests'' - all failed allocations roughly from Jan 2012 until Spring 2013