1*37da2899SCharles.Forsythimplement Itslib; 2*37da2899SCharles.Forsyth 3*37da2899SCharles.Forsythinclude "sys.m"; 4*37da2899SCharles.Forsyth sys: Sys; 5*37da2899SCharles.Forsythinclude "itslib.m"; 6*37da2899SCharles.Forsythinclude "env.m"; 7*37da2899SCharles.Forsyth env: Env; 8*37da2899SCharles.Forsyth 9*37da2899SCharles.Forsyth 10*37da2899SCharles.Forsythinit(): ref Tconfig 11*37da2899SCharles.Forsyth{ 12*37da2899SCharles.Forsyth sys = load Sys Sys->PATH; 13*37da2899SCharles.Forsyth tc := ref Tconfig(-1, sys->fildes(2)); 14*37da2899SCharles.Forsyth env = load Env Env->PATH; 15*37da2899SCharles.Forsyth if (env == nil) 16*37da2899SCharles.Forsyth sys->fprint(sys->fildes(2), "Failed to load %s\n", Env->PATH); 17*37da2899SCharles.Forsyth else { 18*37da2899SCharles.Forsyth vstr := env->getenv(ENV_VERBOSITY); 19*37da2899SCharles.Forsyth mstr := env->getenv(ENV_MFD); 20*37da2899SCharles.Forsyth if (vstr != nil && mstr != nil) { 21*37da2899SCharles.Forsyth tc.verbosity = int vstr; 22*37da2899SCharles.Forsyth tc.mfd = sys->fildes(int mstr); 23*37da2899SCharles.Forsyth } 24*37da2899SCharles.Forsyth } 25*37da2899SCharles.Forsyth if (tc.verbosity >= 0) 26*37da2899SCharles.Forsyth tc.report(S_STIME, 0, sys->sprint("%d", sys->millisec())); 27*37da2899SCharles.Forsyth else 28*37da2899SCharles.Forsyth sys->fprint(sys->fildes(2), "Test is running standalone\n"); 29*37da2899SCharles.Forsyth return tc; 30*37da2899SCharles.Forsyth} 31*37da2899SCharles.Forsyth 32*37da2899SCharles.ForsythTconfig.report(tc: self ref Tconfig, sev: int, verb: int, msg: string) 33*37da2899SCharles.Forsyth{ 34*37da2899SCharles.Forsyth if (sev < 0 || sev > S_ETIME) { 35*37da2899SCharles.Forsyth sys->fprint(sys->fildes(2), "Tconfig.report: Bad severity code: %d\n", sev); 36*37da2899SCharles.Forsyth sev = 0; 37*37da2899SCharles.Forsyth } 38*37da2899SCharles.Forsyth if (tc.mfd != nil && sys->fprint(tc.mfd, "%d%d%s\n", sev, verb, msg) <=0) 39*37da2899SCharles.Forsyth tc.mfd = nil; # Master test process was probably killed 40*37da2899SCharles.Forsyth} 41*37da2899SCharles.Forsyth 42*37da2899SCharles.ForsythTconfig.done(tc: self ref Tconfig) 43*37da2899SCharles.Forsyth{ 44*37da2899SCharles.Forsyth tc.report(S_ETIME, 0, sys->sprint("%d", sys->millisec())); 45*37da2899SCharles.Forsyth} 46