Home Corporate Contacts

TETware Knowledgebase


Products
Solutions

Information

Datasheet
Documentation
FAQ
Knowledgebase

Return to Knowledgebase Index

9. How to solve test case locking problems

 

Question

Occasionally when running tcc we get the following type of messages:


110|59 /tset/tc1/tc1 12:25:52|Build Start, scenario ref 24-0
50||(lock.c, 120): can't acquire exclusive lock \
	c:/Tet3.2/suite/tset/tc1/tet_lock on system 000, \
	server reply code = ER_NOENT
130|59 -3 12:25:52|Build End, scenario ref 24-0
10|60 /tset/tc1/tc1 12:25:52|TC Start, scenario ref 24-0
50||(lock.c, 120): can't acquire exclusive lock \
	c:/Tet3.2/suite/tset/tc1/tet_lock on system 000, \
	server reply code = ER_NOENT
80|60 -3 12:25:53|TC End, scenario ref 24-0


The lock appears to be a file in the test directory. Any ideas as to what might be causing this?

 

Answer

When tcc processes a test case, it uses a locking scheme to prevent multiple tcc processing threads from interfering with each other. The error messages that you describe are generated when tcc can't create a lock for some reason.

Usually this is because either:

  • the directory in which the lock is to be created doesn't exist or is not writable; or:


  • the lock already exists when tcc attempts to create it.
  •  


Clearly, the first case is evidence of a test suite setup problem. The directory containing a test case that is mentioned in a scenario must exist and be writable by tcc (in TETware-Lite) or tccd (in Distributed TETware).

Here are some common reasons for the second case:

  1. The test suite is being processed by more than one instance of tcc.

  2. The scenario uses the :parallel: directive and the test suite has not been structured in a way that permits parallel processing.

  3. A previous tcc run has crashed or has been killed, leaving locks in place.


The solutions to these problems are:

  1. Make sure that the test suite is only being processed by one instance of tcc. If you are using Distributed TETware, remember to check that your system is not being used as a remote target of tcc running on another system.

  2. If you are using the :parallel: directive, you must arrange for each test case to have its own directory. If you use :parallel, count: to execute more than one copy of each test case, you must set TET_EXEC_IN_PLACE=false in the execute mode configuration.

  3. Make sure that there is no other instance of tcc processing the test case, then remove the lock by hand.


See also

  • "Build mode processing'', "Execute mode processing'', "Clean mode processing'' and "Locking'' in Chapter 3 of the TETware Programmers Guide.

 


Home Contacts Legal Copyright Corporate News

Copyright © The Open Group 1995-2012, All Rights Reserved