Ignore:
Timestamp:
Mar 21, 2022, 11:50:25 AM (2 years ago)
Author:
caparsons <caparson@…>
Branches:
ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
Children:
080d2d7
Parents:
22226e4
Message:

added new mutexstmt tests

Location:
tests/concurrent/mutexstmt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • tests/concurrent/mutexstmt/.expect/locks.txt

    r22226e4 r51239d1b  
    33Start Test: multi lock deadlock/mutual exclusion
    44End Test: multi lock deadlock/mutual exclusion
     5Start Test: multi polymorphic lock deadlock/mutual exclusion
     6End Test: multi polymorphic lock deadlock/mutual exclusion
  • tests/concurrent/mutexstmt/locks.cfa

    r22226e4 r51239d1b  
    44
    55const unsigned int num_times = 10000;
     6
     7Duration default_preemption() { return 0; }
    68
    79single_acquisition_lock m1, m2, m3, m4, m5;
     
    2325}
    2426
     27void refTest( single_acquisition_lock & m ) {
     28        mutex ( m ) {
     29                assert(!insideFlag);
     30                insideFlag = true;
     31                assert(insideFlag);
     32                insideFlag = false;
     33        }
     34}
     35
    2536thread T_Multi {};
    2637
    2738void main( T_Multi & this ) {
    2839        for (unsigned int i = 0; i < num_times; i++) {
     40                refTest( m1 );
    2941                mutex ( m1 ) {
    3042                        assert(!insideFlag);
     
    6072}
    6173
     74single_acquisition_lock l1;
     75linear_backoff_then_block_lock l2;
     76owner_lock l3;
     77
     78thread T_Multi_Poly {};
     79
     80void main( T_Multi_Poly & this ) {
     81        for (unsigned int i = 0; i < num_times; i++) {
     82                refTest( l1 );
     83                mutex ( l1 ) {
     84                        assert(!insideFlag);
     85                        insideFlag = true;
     86                        assert(insideFlag);
     87                        insideFlag = false;
     88                }
     89                mutex ( l1, l2, l3 ) {
     90                        assert(!insideFlag);
     91                        insideFlag = true;
     92                        assert(insideFlag);
     93                        insideFlag = false;
     94                }
     95                mutex ( l3, l1 ) {
     96                        assert(!insideFlag);
     97                        insideFlag = true;
     98                        assert(insideFlag);
     99                        insideFlag = false;
     100                }
     101                mutex ( l1, l2 ) {
     102                        assert(!insideFlag);
     103                        insideFlag = true;
     104                        assert(insideFlag);
     105                        insideFlag = false;
     106                }
     107        }
     108}
     109
    62110int num_tasks = 10;
    63111int main() {
    64         processor p[10];
     112        processor p[num_tasks - 1];
    65113
    66114        printf("Start Test: single lock mutual exclusion\n");
    67115        {
    68                 T_Mutex t[10];
     116                T_Mutex t[num_tasks];
    69117        }
    70118        assert(count == num_tasks * num_times);
     
    72120        printf("Start Test: multi lock deadlock/mutual exclusion\n");
    73121        {
    74                 T_Multi t[10];
     122                T_Multi t[num_tasks];
    75123        }
    76124        printf("End Test: multi lock deadlock/mutual exclusion\n");
     125        printf("Start Test: multi polymorphic lock deadlock/mutual exclusion\n");
     126        {
     127                T_Multi_Poly t[num_tasks];
     128        }
     129        printf("End Test: multi polymorphic lock deadlock/mutual exclusion\n");
    77130}
Note: See TracChangeset for help on using the changeset viewer.