Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S sidekit
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Anthony Larcher
  • sidekit
  • Merge requests
  • !1

Open
Created Mar 29, 2017 by Andreas Nautsch@nautschDeveloper
  • Report abuse
Report abuse

StatServer, Key & Matlab, initial unittests

  • Overview 0
  • Commits 25
  • Changes 15

Hi Anthony,

for the purpose of inherit sidekit.StatServer (e.g., for defining stat2 or other attributes), I introduced a nested template function called by accumulate_stats, which can be altered by labs using sidekit, without touching the original sidekit. In order to not call this template function on large-scale tests where only the original sidekit is of interest, I introduced a flag variable before the for-loop, which determines, whether or not the nested template function was inherited, and thus whether or not it may need to be called.

Regarding the Key file, I added Matlab file format support.

In order to sanity-check my changes (which apparently was more necessary than I hoped ;-) ), I started a unittest folder, in which all unittests could be put. In the "naming convention" I went for an easy way, i.e. test[subpackage][classfilename].py - an init.py contains two lists of either typical sidekit class functions and unittest class functions. These are created for the purpose of sanity-checking the unittest implementations ... maybe a newly introduced method was missed to be added to the unittest of the class, and maybe the a deprecated method was dropped, but still is tested within the depending unittest class. Please have a look on the tearDownClass functions of the unittests for the key and the statserver classes. Due to time limitations, I just concerned the functions, which I have touched during the process - all other functions I augmented with the decoration"@skip("not-yet implemented UnitTest") - hope this provides a neat basis for your unittests to come.

In the unittest for the StatServer, I demonstrated on a minimal example how inheritance augmenting the accumulate_stat could look like. My implementation with this "LatticeStatServer" went out much more detailed than I assumed in the beginning (until not published I won't put it inside sidekit, the approach is merely put into the world and barely examined). But: the advantages of this design are that a) sidekit is not touched on expansions by different labs (comparability & LGPL concerns), b) sidekit code can be reused without rewriting it, avoiding point of failures. Also, I added some read/write & merge handle examples. Regarding merge(), I externalized the pre-computation of meta information, since this is also necessary for inherited classes - avoiding redundant code on inheritance. During file-I/O unittests, I used tempfiles, thus each unittest case call a setUp & tearDown where a list of tempfiles is initialized, and cleaned up afterwards.

In the unittest for the Key, I'm just looking for whether or not HDF5 datasets / groups / datasets in groups exist, according to the depending file format convention (sidekit/Matlab).

Regarding the implemented unittests, I don't claim them to be exhaustive. It is a starting point to check basic functionality. If bugs are caused, the unittests need to be adapted as well. Also, please feel free to implement the skipped functions (or maybe a student assistant can be motivated for this task).

Best, Andreas

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: dev-anautsch