tarantool / test-run

Tarantool functional testing framework
14 stars 15 forks source link

Add test_run:log() for writing output to result file #224

Open sergepetrenko opened 3 years ago

sergepetrenko commented 3 years ago

When writing a multiline block in test, the whole block gets executed without any output to the result file. This is non-informative and leads to No output for ... seconds warnings, when block execution consumes a lot of time.

Example:

for i = 1,10 do                                                                     
    leader_id = get_leader(leader_set)                                              
    test_run:cmd('stop server raft_replica'..leader_id)                             
    leader_set[leader_id] = false                                                   
    new_leader_id = get_leader(leader_set)                                          
    assert(new_leader_id ~= leader_id)                                              
    test_run:cmd('start server raft_replica'..leader_id..' with wait=True, wait_load=True')
    leader_set[leader_id] = true                                                    
end;                                                                                
 | ---                                                                              
 | ...                                                                              

Would be much more informative with:

for i = 1,10 do                                                                     
+   test_run:log(i)
    leader_id = get_leader(leader_set)                                              
    test_run:cmd('stop server raft_replica'..leader_id)                             
    leader_set[leader_id] = false                                                   
    new_leader_id = get_leader(leader_set)                                          
    assert(new_leader_id ~= leader_id)
+   test_run:log('killed current leader, new leader elected')                                              
    test_run:cmd('start server raft_replica'..leader_id..' with wait=True, wait_load=True')
    leader_set[leader_id] = true                                                    
end;                                                                                
 | ---                                                                              
 | ...                                                                              
+test_run:log(i)
+ | ---
+ | - 1
+ | ...
+test_run:log('killed current leader, new leader elected')
+ | ---
+ | - killed current leader, new leader elected
+ | ...
+test_run:log(i)
+ | ---
+ | - 2
+ | ...
+test_run:log('killed current leader, new leader elected')
+ | ---
+ | - killed current leader, new leader elected
+ | ...
...
Totktonada commented 3 years ago

Raw idea: test_run:print() to print informational messages to the terminal.