Skip to content

Commit c2ea3f9

Browse files
committed
feat: add latency benchmark suite
1 parent 727cf3f commit c2ea3f9

12 files changed

Lines changed: 1077 additions & 31 deletions

benchmarks/AbacEvaluationBench.php

Lines changed: 519 additions & 17 deletions
Large diffs are not rendered by default.
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
<?php
2+
3+
namespace zennit\ABAC\Benchmarks;
4+
5+
use Exception;
6+
use PhpBench\Benchmark\Metadata\Annotations\Iterations;
7+
use PhpBench\Benchmark\Metadata\Annotations\Revs;
8+
use zennit\ABAC\Benchmarks\Concerns\AbacBenchmarkSupport;
9+
use zennit\ABAC\Enums\PolicyMethod;
10+
11+
/** @noinspection PhpUnused */
12+
class AbacLatencyEvaluationBench
13+
{
14+
use AbacBenchmarkSupport;
15+
16+
/**
17+
* @BeforeMethods({"setUpComprehensiveReadSmallLatencyScenario"})
18+
*
19+
* @Revs(100)
20+
*
21+
* @Iterations(5)
22+
*
23+
* @throws Exception
24+
*/
25+
public function benchReadComprehensiveSmallLatency(): void
26+
{
27+
$this->runComprehensiveBenchmark();
28+
}
29+
30+
/**
31+
* @BeforeMethods({"setUpComprehensiveReadMediumLatencyScenario"})
32+
*
33+
* @Revs(100)
34+
*
35+
* @Iterations(5)
36+
*
37+
* @throws Exception
38+
*/
39+
public function benchReadComprehensiveMediumLatency(): void
40+
{
41+
$this->runComprehensiveBenchmark();
42+
}
43+
44+
/**
45+
* @BeforeMethods({"setUpComprehensiveReadLargeLatencyScenario"})
46+
*
47+
* @Revs(100)
48+
*
49+
* @Iterations(5)
50+
*
51+
* @throws Exception
52+
*/
53+
public function benchReadComprehensiveLargeLatency(): void
54+
{
55+
$this->runComprehensiveBenchmark();
56+
}
57+
58+
/**
59+
* @BeforeMethods({"setUpComprehensiveCreateSmallLatencyScenario"})
60+
*
61+
* @Revs(100)
62+
*
63+
* @Iterations(5)
64+
*
65+
* @throws Exception
66+
*/
67+
public function benchCreateComprehensiveSmallLatency(): void
68+
{
69+
$this->runComprehensiveBenchmark();
70+
}
71+
72+
/**
73+
* @BeforeMethods({"setUpComprehensiveCreateMediumLatencyScenario"})
74+
*
75+
* @Revs(100)
76+
*
77+
* @Iterations(5)
78+
*
79+
* @throws Exception
80+
*/
81+
public function benchCreateComprehensiveMediumLatency(): void
82+
{
83+
$this->runComprehensiveBenchmark();
84+
}
85+
86+
/**
87+
* @BeforeMethods({"setUpComprehensiveCreateLargeLatencyScenario"})
88+
*
89+
* @Revs(100)
90+
*
91+
* @Iterations(5)
92+
*
93+
* @throws Exception
94+
*/
95+
public function benchCreateComprehensiveLargeLatency(): void
96+
{
97+
$this->runComprehensiveBenchmark();
98+
}
99+
100+
/**
101+
* @BeforeMethods({"setUpComprehensiveUpdateSmallLatencyScenario"})
102+
*
103+
* @Revs(100)
104+
*
105+
* @Iterations(5)
106+
*
107+
* @throws Exception
108+
*/
109+
public function benchUpdateComprehensiveSmallLatency(): void
110+
{
111+
$this->runComprehensiveBenchmark();
112+
}
113+
114+
/**
115+
* @BeforeMethods({"setUpComprehensiveUpdateMediumLatencyScenario"})
116+
*
117+
* @Revs(100)
118+
*
119+
* @Iterations(5)
120+
*
121+
* @throws Exception
122+
*/
123+
public function benchUpdateComprehensiveMediumLatency(): void
124+
{
125+
$this->runComprehensiveBenchmark();
126+
}
127+
128+
/**
129+
* @BeforeMethods({"setUpComprehensiveUpdateLargeLatencyScenario"})
130+
*
131+
* @Revs(100)
132+
*
133+
* @Iterations(5)
134+
*
135+
* @throws Exception
136+
*/
137+
public function benchUpdateComprehensiveLargeLatency(): void
138+
{
139+
$this->runComprehensiveBenchmark();
140+
}
141+
142+
/**
143+
* @BeforeMethods({"setUpComprehensiveDeleteSmallLatencyScenario"})
144+
*
145+
* @Revs(100)
146+
*
147+
* @Iterations(5)
148+
*
149+
* @throws Exception
150+
*/
151+
public function benchDeleteComprehensiveSmallLatency(): void
152+
{
153+
$this->runComprehensiveBenchmark();
154+
}
155+
156+
/**
157+
* @BeforeMethods({"setUpComprehensiveDeleteMediumLatencyScenario"})
158+
*
159+
* @Revs(100)
160+
*
161+
* @Iterations(5)
162+
*
163+
* @throws Exception
164+
*/
165+
public function benchDeleteComprehensiveMediumLatency(): void
166+
{
167+
$this->runComprehensiveBenchmark();
168+
}
169+
170+
/**
171+
* @BeforeMethods({"setUpComprehensiveDeleteLargeLatencyScenario"})
172+
*
173+
* @Revs(100)
174+
*
175+
* @Iterations(5)
176+
*
177+
* @throws Exception
178+
*/
179+
public function benchDeleteComprehensiveLargeLatency(): void
180+
{
181+
$this->runComprehensiveBenchmark();
182+
}
183+
184+
public function setUpComprehensiveReadSmallLatencyScenario(): void
185+
{
186+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::READ, 1000, 2);
187+
}
188+
189+
public function setUpComprehensiveReadMediumLatencyScenario(): void
190+
{
191+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::READ, 4000, 4);
192+
}
193+
194+
public function setUpComprehensiveReadLargeLatencyScenario(): void
195+
{
196+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::READ, 10000, 8);
197+
}
198+
199+
public function setUpComprehensiveCreateSmallLatencyScenario(): void
200+
{
201+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::CREATE, 1000, 2);
202+
}
203+
204+
public function setUpComprehensiveCreateMediumLatencyScenario(): void
205+
{
206+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::CREATE, 4000, 4);
207+
}
208+
209+
public function setUpComprehensiveCreateLargeLatencyScenario(): void
210+
{
211+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::CREATE, 10000, 8);
212+
}
213+
214+
public function setUpComprehensiveUpdateSmallLatencyScenario(): void
215+
{
216+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::UPDATE, 1000, 2);
217+
}
218+
219+
public function setUpComprehensiveUpdateMediumLatencyScenario(): void
220+
{
221+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::UPDATE, 4000, 4);
222+
}
223+
224+
public function setUpComprehensiveUpdateLargeLatencyScenario(): void
225+
{
226+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::UPDATE, 10000, 8);
227+
}
228+
229+
public function setUpComprehensiveDeleteSmallLatencyScenario(): void
230+
{
231+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::DELETE, 1000, 2);
232+
}
233+
234+
public function setUpComprehensiveDeleteMediumLatencyScenario(): void
235+
{
236+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::DELETE, 4000, 4);
237+
}
238+
239+
public function setUpComprehensiveDeleteLargeLatencyScenario(): void
240+
{
241+
$this->setUpComprehensiveLatencyScenario(PolicyMethod::DELETE, 10000, 8);
242+
}
243+
244+
protected function setUpComprehensiveLatencyScenario(PolicyMethod $method, int $postCount, int $branchCount): void
245+
{
246+
$this->setUpComprehensiveScenario($method, $postCount, $branchCount);
247+
$this->artificialLatencyMicros = 100000;
248+
}
249+
}

0 commit comments

Comments
 (0)