Skip to content
Snippets Groups Projects
  • David M. Lee's avatar
    752ffc69
    Migrate hashtest/hashtest2 to be unit tests. · 752ffc69
    David M. Lee authored
    Both hashtest and hashtest2 are manual testing apps that thrash hash
    tables (hashtab and ao2 containers, respectively), by spinning up
    several threads that randomly insert, delete, lookup and iterate over
    the hash table. If the app doesn't crash, the hash table probably passes
    the test. Those utils are not a part of the typical Asterisk build, so
    they do not usually get compiled. This all makes them less that useful.
    
    This patch removes those manual test programs and replaces them with
    Asterisk unit test modules (test_{hashtab,astobj2}_thrash.so). It also
    attempts to make the tests more deterministic.
    
    * Rather than spinning up some number of threads that operate on the
      hash table randomly, spin up four threads that concurrenly add,
      remove, lookup and iterate over the hash table.
    * Each thread checks the state of the hash table both during and after
      execution, and indicates a test failure if things are not as expected.
    * Each thread times out after 60 seconds to prevent deadlocking the unit
      test run.
    
    (closes issue ASTERISK-20505)
    Reported by: Matt Jordan
    Review: https://reviewboard.asterisk.org/r/2189/
    ........
    
    Merged revisions 376306 from http://svn.asterisk.org/svn/asterisk/branches/1.8
    ........
    
    Merged revisions 376315 from http://svn.asterisk.org/svn/asterisk/branches/10
    ........
    
    Merged revisions 376339 from http://svn.asterisk.org/svn/asterisk/branches/11
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376341 65c4cc65-6c06-0410-ace0-fbb531ad65f3
    752ffc69
    History
    Migrate hashtest/hashtest2 to be unit tests.
    David M. Lee authored
    Both hashtest and hashtest2 are manual testing apps that thrash hash
    tables (hashtab and ao2 containers, respectively), by spinning up
    several threads that randomly insert, delete, lookup and iterate over
    the hash table. If the app doesn't crash, the hash table probably passes
    the test. Those utils are not a part of the typical Asterisk build, so
    they do not usually get compiled. This all makes them less that useful.
    
    This patch removes those manual test programs and replaces them with
    Asterisk unit test modules (test_{hashtab,astobj2}_thrash.so). It also
    attempts to make the tests more deterministic.
    
    * Rather than spinning up some number of threads that operate on the
      hash table randomly, spin up four threads that concurrenly add,
      remove, lookup and iterate over the hash table.
    * Each thread checks the state of the hash table both during and after
      execution, and indicates a test failure if things are not as expected.
    * Each thread times out after 60 seconds to prevent deadlocking the unit
      test run.
    
    (closes issue ASTERISK-20505)
    Reported by: Matt Jordan
    Review: https://reviewboard.asterisk.org/r/2189/
    ........
    
    Merged revisions 376306 from http://svn.asterisk.org/svn/asterisk/branches/1.8
    ........
    
    Merged revisions 376315 from http://svn.asterisk.org/svn/asterisk/branches/10
    ........
    
    Merged revisions 376339 from http://svn.asterisk.org/svn/asterisk/branches/11
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376341 65c4cc65-6c06-0410-ace0-fbb531ad65f3