JobOutputFilesTest.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php namespace GO\Job\Tests;
  2. use GO\Job;
  3. use PHPUnit\Framework\TestCase;
  4. class JobOutputFilesTest extends TestCase
  5. {
  6. public function testShouldWriteCommandOutputToSingleFile()
  7. {
  8. $command = PHP_BINARY . ' ' . __DIR__ . '/../test_job.php';
  9. $job = new Job($command);
  10. $outputFile = __DIR__ . '/../tmp/output.log';
  11. @unlink($outputFile);
  12. // Test fist that the file doesn't exist yet
  13. $this->assertFalse(file_exists($outputFile));
  14. $job->output($outputFile)->run();
  15. sleep(2);
  16. $this->assertTrue(file_exists($outputFile));
  17. // Content should be 'hi'
  18. $this->assertEquals('hi', file_get_contents($outputFile));
  19. unlink($outputFile);
  20. }
  21. public function testShouldWriteCommandOutputToMultipleFiles()
  22. {
  23. $command = PHP_BINARY . ' ' . __DIR__ . '/../test_job.php';
  24. $job = new Job($command);
  25. $outputFile1 = __DIR__ . '/../tmp/output1.log';
  26. $outputFile2 = __DIR__ . '/../tmp/output2.log';
  27. $outputFile3 = __DIR__ . '/../tmp/output3.log';
  28. @unlink($outputFile1);
  29. @unlink($outputFile2);
  30. @unlink($outputFile3);
  31. // Test fist that the file doesn't exist yet
  32. $this->assertFalse(file_exists($outputFile1));
  33. $this->assertFalse(file_exists($outputFile2));
  34. $this->assertFalse(file_exists($outputFile3));
  35. $job->output([
  36. $outputFile1,
  37. $outputFile2,
  38. $outputFile3,
  39. ])->run();
  40. sleep(2);
  41. $this->assertTrue(file_exists($outputFile1));
  42. $this->assertTrue(file_exists($outputFile2));
  43. $this->assertTrue(file_exists($outputFile3));
  44. $this->assertEquals('hi', file_get_contents($outputFile1));
  45. $this->assertEquals('hi', file_get_contents($outputFile2));
  46. $this->assertEquals('hi', file_get_contents($outputFile3));
  47. unlink($outputFile1);
  48. unlink($outputFile2);
  49. unlink($outputFile3);
  50. }
  51. public function testShouldWriteFunctionOutputToSingleFile()
  52. {
  53. $job = new Job(function () {
  54. echo 'Hello ';
  55. return 'World!';
  56. });
  57. $outputFile = __DIR__ . '/../tmp/output.log';
  58. @unlink($outputFile);
  59. // Test fist that the file doesn't exist yet
  60. $this->assertFalse(file_exists($outputFile));
  61. $job->output($outputFile)->run();
  62. sleep(2);
  63. $this->assertTrue(file_exists($outputFile));
  64. $this->assertEquals('Hello World!', file_get_contents($outputFile));
  65. unlink($outputFile);
  66. }
  67. public function testShouldWriteFunctionOutputToMultipleFiles()
  68. {
  69. $job = new Job(function () {
  70. echo 'Hello';
  71. });
  72. $outputFile1 = __DIR__ . '/../tmp/output1.log';
  73. $outputFile2 = __DIR__ . '/../tmp/output2.log';
  74. $outputFile3 = __DIR__ . '/../tmp/output3.log';
  75. @unlink($outputFile1);
  76. @unlink($outputFile2);
  77. @unlink($outputFile3);
  78. // Test fist that the file doesn't exist yet
  79. $this->assertFalse(file_exists($outputFile1));
  80. $this->assertFalse(file_exists($outputFile2));
  81. $this->assertFalse(file_exists($outputFile3));
  82. $job->output([
  83. $outputFile1,
  84. $outputFile2,
  85. $outputFile3,
  86. ])->run();
  87. sleep(2);
  88. $this->assertTrue(file_exists($outputFile1));
  89. $this->assertTrue(file_exists($outputFile2));
  90. $this->assertTrue(file_exists($outputFile3));
  91. $this->assertEquals('Hello', file_get_contents($outputFile1));
  92. $this->assertEquals('Hello', file_get_contents($outputFile2));
  93. $this->assertEquals('Hello', file_get_contents($outputFile3));
  94. unlink($outputFile1);
  95. unlink($outputFile2);
  96. unlink($outputFile3);
  97. }
  98. public function testShouldWriteFunctionReturnToSingleFile()
  99. {
  100. $job = new Job(function () {
  101. return 'Hello World!';
  102. });
  103. $outputFile = __DIR__ . '/../tmp/output1.log';
  104. // Test fist that the file doesn't exist yet
  105. $this->assertFalse(file_exists($outputFile));
  106. $job->output($outputFile)->run();
  107. sleep(2);
  108. $this->assertTrue(file_exists($outputFile));
  109. $this->assertEquals('Hello World!', file_get_contents($outputFile));
  110. unlink($outputFile);
  111. }
  112. public function testShouldWriteFunctionReturnToMultipleFiles()
  113. {
  114. $job = new Job(function () {
  115. return ['Hello ', 'World!'];
  116. });
  117. $outputFile1 = __DIR__ . '/../tmp/output1.log';
  118. $outputFile2 = __DIR__ . '/../tmp/output2.log';
  119. $outputFile3 = __DIR__ . '/../tmp/output3.log';
  120. @unlink($outputFile1);
  121. @unlink($outputFile2);
  122. @unlink($outputFile3);
  123. // Test fist that the file doesn't exist yet
  124. $this->assertFalse(file_exists($outputFile1));
  125. $this->assertFalse(file_exists($outputFile2));
  126. $this->assertFalse(file_exists($outputFile3));
  127. $job->output([
  128. $outputFile1,
  129. $outputFile2,
  130. $outputFile3,
  131. ])->run();
  132. sleep(2);
  133. $this->assertTrue(file_exists($outputFile1));
  134. $this->assertTrue(file_exists($outputFile2));
  135. $this->assertTrue(file_exists($outputFile3));
  136. $this->assertEquals('Hello World!', file_get_contents($outputFile1));
  137. $this->assertEquals('Hello World!', file_get_contents($outputFile2));
  138. $this->assertEquals('Hello World!', file_get_contents($outputFile3));
  139. unlink($outputFile1);
  140. unlink($outputFile2);
  141. unlink($outputFile3);
  142. }
  143. public function testShouldWriteFunctionOutputAndReturnToFile()
  144. {
  145. $job = new Job(function () {
  146. echo 'Hello ';
  147. return 'World!';
  148. });
  149. $outputFile = __DIR__ . '/../tmp/output1.log';
  150. // Test fist that the file doesn't exist yet
  151. $this->assertFalse(file_exists($outputFile));
  152. $job->output($outputFile)->run();
  153. sleep(2);
  154. $this->assertTrue(file_exists($outputFile));
  155. $this->assertEquals('Hello World!', file_get_contents($outputFile));
  156. unlink($outputFile);
  157. }
  158. }