| @@ 217-257 (lines=41) @@ | ||
| 214 | * |
|
| 215 | * @return void |
|
| 216 | */ |
|
| 217 | public function addCleaningNotRunningProcessWithExtra() |
|
| 218 | { |
|
| 219 | $pipes = []; |
|
| 220 | $process = proc_open('sleep 3 &', self::getDevNullProcOpenDescriptors(), $pipes); |
|
| 221 | $status = proc_get_status($process); |
|
| 222 | if (!$status['running']) { |
|
| 223 | $this->markTestSkipped('Unable to start sleep process.'); |
|
| 224 | return; |
|
| 225 | } |
|
| 226 | ||
| 227 | $extraPid = $status['pid']; |
|
| 228 | ||
| 229 | $expireSecs = time() + 60; |
|
| 230 | $initialVersion = new ObjectID(); |
|
| 231 | $initalTask = [ |
|
| 232 | '_id' => 'testId', |
|
| 233 | 'hosts' => [ |
|
| 234 | HOSTNAME => [ |
|
| 235 | $extraPid => $expireSecs, |
|
| 236 | '9999999' => $expireSecs, |
|
| 237 | ], |
|
| 238 | ], |
|
| 239 | 'version' => $initialVersion, |
|
| 240 | ]; |
|
| 241 | ||
| 242 | $this->collection->insertOne($initalTask); |
|
| 243 | ||
| 244 | $this->assertTrue($this->registry->add($this->getProcess('testId', PHP_INT_MAX, 2, 2))); |
|
| 245 | ||
| 246 | $this->assertSame(1, $this->collection->count()); |
|
| 247 | $result = $this->collection->findOne(); |
|
| 248 | ||
| 249 | $expected = [ |
|
| 250 | '_id' => 'testId', |
|
| 251 | 'hosts' => [HOSTNAME => [$extraPid => $expireSecs, getmypid() => ProcessRegistry::MONGO_INT32_MAX]], |
|
| 252 | 'version' => $result['version'], |
|
| 253 | ]; |
|
| 254 | ||
| 255 | $this->assertSame($expected, $result); |
|
| 256 | $this->assertNotSame((string)$initialVersion, (string)$result['version']); |
|
| 257 | } |
|
| 258 | ||
| 259 | /** |
|
| 260 | * @test |
|
| @@ 370-410 (lines=41) @@ | ||
| 367 | * |
|
| 368 | * @return void |
|
| 369 | */ |
|
| 370 | public function addCleaningRecycledProcessWithExtra() |
|
| 371 | { |
|
| 372 | $pipes = []; |
|
| 373 | $process = proc_open('sleep 3 &', self::getDevNullProcOpenDescriptors(), $pipes); |
|
| 374 | $status = proc_get_status($process); |
|
| 375 | if (!$status['running']) { |
|
| 376 | $this->markTestSkipped('Unable to start sleep process.'); |
|
| 377 | return; |
|
| 378 | } |
|
| 379 | ||
| 380 | $extraPid = $status['pid']; |
|
| 381 | ||
| 382 | $expireSecs = time() + 60; |
|
| 383 | $initialVersion = new ObjectID(); |
|
| 384 | $initalTask = [ |
|
| 385 | '_id' => 'testId', |
|
| 386 | 'hosts' => [ |
|
| 387 | HOSTNAME => [ |
|
| 388 | $extraPid => $expireSecs, |
|
| 389 | getmypid() => $expireSecs, |
|
| 390 | ], |
|
| 391 | ], |
|
| 392 | 'version' => $initialVersion, |
|
| 393 | ]; |
|
| 394 | ||
| 395 | $this->collection->insertOne($initalTask); |
|
| 396 | ||
| 397 | $this->assertTrue($this->registry->add($this->getProcess('testId', PHP_INT_MAX, 2, 2))); |
|
| 398 | ||
| 399 | $this->assertSame(1, $this->collection->count()); |
|
| 400 | $result = $this->collection->findOne(); |
|
| 401 | ||
| 402 | $expected = [ |
|
| 403 | '_id' => 'testId', |
|
| 404 | 'hosts' => [HOSTNAME => [$extraPid => $expireSecs, getmypid() => ProcessRegistry::MONGO_INT32_MAX]], |
|
| 405 | 'version' => $result['version'], |
|
| 406 | ]; |
|
| 407 | ||
| 408 | $this->assertSame($expected, $result); |
|
| 409 | $this->assertNotSame((string)$initialVersion, (string)$result['version']); |
|
| 410 | } |
|
| 411 | ||
| 412 | /** |
|
| 413 | * @test |
|