-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPMETER.PAS
138 lines (129 loc) · 3.45 KB
/
PMETER.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{ @author: Sylvain Maltais (support@gladir.com)
@created: 2022
@website(https://www.gladir.com/dev-cools)
@abstract(Target: Turbo Pascal, Free Pascal)
}
Program PMETER;
{$M 8192,0,16384}
Uses DOS;
Var
StartTime:LongInt;
LogFile:Text;
ModeTest:(_None,_TestFile,_TestExec);
Count,I:Integer;
Err:Word;
LogName,FileName,ExecName:String;
Function StrToUpper(S:String):String;
Var
I:Byte;
Begin
For I:=1 to Length(S)do Begin
If S[I] in['a'..'z']Then S[I]:=Chr(Ord(S[I])-32);
End;
StrToUpper:=S;
End;
Function GetCurrTime:LongInt;
Var
Hour,Min,Sec,Sec100:Word;
Begin
GetTime(Hour,Min,Sec,Sec100);
GetCurrTime:=Sec100+(Sec*100)+(Min*60*100)+(Hour*60*60*100);
End;
Procedure TestExec;
Begin
For I:=1 to Count do Begin
Exec(ExecName,'');
If LogName<>''Then Begin
WriteLn(LogFile,GetCurrTime-StartTime,' centiŠme de secondes',
' : Ex‚cution de ',ExecName);
WriteLn(LogFile,'R‚sultat, Code de sortie ',
DosExitCode,', Code d''erreur : ',DOSError);
End;
End;
End;
Procedure TestOpenFiles;
Var
FileToOpen:File;
Begin
For I:=1 to Count do Begin
{$I-}Assign(FileToOpen,FileName);
Reset(FileToOpen);{$I+}
If LogName<>''Then Begin
WriteLn(LogFile,GetCurrTime-StartTime,' centiŠme de secondes',
' : Ouverture du fichier ',FileName);
WriteLn(LogFile,'R‚sultat de l''ouverture : ',IoResult);
End;
Close(FileToOpen);
End;
End;
BEGIN
If(ParamStr(1)='/?')or(ParamStr(1)='--help')or(ParamStr(1)='-h')Then Begin
WriteLn('PMETER : Cette commande permet de faire des tests de charge.');
WriteLn;
WriteLn('Syntaxe : PMETER /FILE:nomdufichier /COUNT:nombre [/LOG:nomdufichier]');
WriteLn(' PMETER /EXEC:nomdufichier /COUNT:nombre [/LOG:nomdufichier]');
WriteLn;
WriteLn(' /COUNT:nombre Ce parametre permet d''indiquer le nombre de r‚p‚tition');
WriteLn(' /EXEC:nomdufichier Ce parametre permet d''indiquer le fichier ex‚cutable');
WriteLn(' /FILE:nomdufichier Ce parametre permet d''indiquer le fichier … ouvrir');
WriteLn(' /LOG:nomdufichier Ce parametre permet d''indiquer le fichier ',
'recevant les r‚sultats');
End
Else
If ParamCount>0Then Begin
ModeTest:=_None;
FileName:='';
ExecName:='';
LogName:='';
Count:=0;
For I:=1 to ParamCount do Begin
If Copy(StrToUpper(ParamStr(I)),1,7)='/COUNT:'Then Begin
Val(Copy(ParamStr(I),8,255),Count,Err);
If Err>0Then Begin
WriteLn('Valeur de compteur invalide');
Halt;
End;
If Count<=0Then Begin
WriteLn('La valeur du compteur doit ˆtre sup‚rieur … 0.');
Halt;
End;
End
Else
If Copy(StrToUpper(ParamStr(I)),1,6)='/EXEC:'Then Begin
ModeTest:=_TestExec;
ExecName:=Copy(ParamStr(I),7,255);
End
Else
If Copy(StrToUpper(ParamStr(I)),1,6)='/FILE:'Then Begin
ModeTest:=_TestFile;
FileName:=Copy(ParamStr(I),7,255);
End
Else
If Copy(StrToUpper(ParamStr(I)),1,5)='/LOG:'Then Begin
LogName:=Copy(ParamStr(I),6,255);
End
Else
Begin
WriteLn('ParamŠtre inconnu');
Halt;
End;
End;
If LogName<>''Then Begin
Assign(LogFile,LogName);
{$I+}Rewrite(LogFile); {$I+}
If IoResult<>0Then Begin
WriteLn('Impossible de cr‚er le fichier de journal des op‚rations !');
Halt;
End;
End;
StartTime:=GetCurrTime;
Case ModeTest of
_None:WriteLn('Mode de test non-d‚fini');
_TestFile:TestOpenFiles;
_TestExec:TestExec;
End;
If LogName<>''Then Close(LogFile);
End
Else
WriteLn('ParamŠtre requis');
END.