2
2
3
3
namespace Algolia \AlgoliaSearch \Test \Integration \Queue ;
4
4
5
+ use Algolia \AlgoliaSearch \Helper \ConfigHelper ;
5
6
use Algolia \AlgoliaSearch \Model \Indexer \Product ;
6
7
use Algolia \AlgoliaSearch \Model \Indexer \QueueRunner ;
7
8
use Algolia \AlgoliaSearch \Model \IndicesConfigurator ;
12
13
use Magento \Framework \App \ResourceConnection ;
13
14
use Magento \Framework \DB \Adapter \AdapterInterface ;
14
15
16
+ /**
17
+ * @magentoDbIsolation disabled
18
+ * @magentoAppIsolation enabled
19
+ */
15
20
class QueueTest extends TestCase
16
21
{
17
22
private const INCOMPLETE_REASON = "Must revisit transaction handling across connections. " ;
@@ -29,27 +34,27 @@ public function setUp(): void
29
34
{
30
35
parent ::setUp ();
31
36
32
- $ this ->jobsCollectionFactory = $ this ->getObjectManager () ->create (JobsCollectionFactory::class);
37
+ $ this ->jobsCollectionFactory = $ this ->objectManager ->create (JobsCollectionFactory::class);
33
38
34
39
/** @var ResourceConnection $resource */
35
- $ resource = $ this ->getObjectManager ()-> create (ResourceConnection::class);
40
+ $ resource = $ this ->objectManager -> get (ResourceConnection::class);
36
41
$ this ->connection = $ resource ->getConnection ();
37
42
38
- $ this ->queue = $ this ->getObjectManager ()-> create (Queue::class);
43
+ $ this ->queue = $ this ->objectManager -> get (Queue::class);
39
44
}
40
45
41
46
public function testFill ()
42
47
{
43
48
$ this ->resetConfigs ([
44
- ' algoliasearch_queue/queue/number_of_job_to_run ' ,
45
- ' algoliasearch_advanced/queue/number_of_element_by_page ' ,
49
+ ConfigHelper:: NUMBER_OF_JOB_TO_RUN ,
50
+ ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE ,
46
51
]);
47
52
48
- $ this ->setConfig (' algoliasearch_queue/queue/active ' , '1 ' );
53
+ $ this ->setConfig (ConfigHelper:: IS_ACTIVE , '1 ' );
49
54
$ this ->connection ->query ('TRUNCATE TABLE algoliasearch_queue ' );
50
55
51
56
/** @var Product $indexer */
52
- $ indexer = $ this ->getObjectManager ()-> create (Product::class);
57
+ $ indexer = $ this ->objectManager -> get (Product::class);
53
58
$ indexer ->executeFull ();
54
59
55
60
$ rows = $ this ->connection ->query ('SELECT * FROM algoliasearch_queue ' )->fetchAll ();
@@ -80,18 +85,17 @@ public function testFill()
80
85
}
81
86
}
82
87
83
- /**
84
- * @depends testFill
85
- * @magentoDbIsolation disabled
86
- */
87
88
public function testExecute ()
88
89
{
89
- $ this ->markTestIncomplete (self ::INCOMPLETE_REASON );
90
+ $ this ->setConfig (ConfigHelper::IS_ACTIVE , '1 ' );
91
+ $ this ->connection ->query ('TRUNCATE TABLE algoliasearch_queue ' );
90
92
91
- $ this ->setConfig ('algoliasearch_queue/queue/active ' , '1 ' );
93
+ /** @var Product $indexer */
94
+ $ indexer = $ this ->objectManager ->get (Product::class);
95
+ $ indexer ->executeFull ();
92
96
93
97
/** @var Queue $queue */
94
- $ queue = $ this ->getObjectManager ()-> create (Queue::class);
98
+ $ queue = $ this ->objectManager -> get (Queue::class);
95
99
96
100
// Run the first two jobs - saveSettings, batch
97
101
$ queue ->runCron (2 , true );
@@ -109,7 +113,7 @@ public function testExecute()
109
113
110
114
$ this ->assertTrue ($ existsDefaultTmpIndex , 'Default products production index does not exists and it should ' );
111
115
112
- // Run the second two jobs - batch, move
116
+ // Run the last move - move
113
117
$ queue ->runCron (2 , true );
114
118
115
119
$ this ->algoliaHelper ->waitLastTask ();
@@ -132,31 +136,26 @@ public function testExecute()
132
136
$ this ->assertTrue ($ existsDefaultProdIndex , 'Default product production index does not exists and it should ' );
133
137
134
138
/** TODO: There are mystery items being added to queue from unknown save process on product_id=1 */
135
- /* $rows = $this->connection->query('SELECT * FROM algoliasearch_queue')->fetchAll();
136
- $this->assertEquals(0, count($rows)); */
139
+ $ rows = $ this ->connection ->query ('SELECT * FROM algoliasearch_queue ' )->fetchAll ();
140
+ $ this ->assertEquals (0 , count ($ rows ));
137
141
}
138
142
139
- /**
140
- * @magentoDbIsolation disabled
141
- */
142
143
public function testSettings ()
143
144
{
144
- $ this ->markTestIncomplete (self ::INCOMPLETE_REASON );
145
-
146
145
$ this ->resetConfigs ([
147
- ' algoliasearch_queue/queue/number_of_job_to_run ' ,
148
- ' algoliasearch_advanced/queue/number_of_element_by_page ' ,
149
- ' algoliasearch_instant/instant_facets/facets ' ,
150
- ' algoliasearch_products/products/product_additional_attributes ' ,
146
+ ConfigHelper:: NUMBER_OF_JOB_TO_RUN ,
147
+ ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE ,
148
+ ConfigHelper:: FACETS ,
149
+ ConfigHelper:: PRODUCT_ATTRIBUTES
151
150
]);
152
151
153
- $ this ->setConfig (' algoliasearch_queue/queue/active ' , '1 ' );
152
+ $ this ->setConfig (ConfigHelper:: IS_ACTIVE , '1 ' );
154
153
155
154
$ this ->connection ->query ('DELETE FROM algoliasearch_queue ' );
156
155
157
156
// Reindex products multiple times
158
157
/** @var Product $indexer */
159
- $ indexer = $ this ->getObjectManager ()-> create (Product::class);
158
+ $ indexer = $ this ->objectManager -> get (Product::class);
160
159
$ indexer ->executeFull ();
161
160
$ indexer ->executeFull ();
162
161
$ indexer ->executeFull ();
@@ -166,7 +165,7 @@ public function testSettings()
166
165
167
166
// Process the whole queue
168
167
/** @var QueueRunner $queueRunner */
169
- $ queueRunner = $ this ->getObjectManager ()-> create (QueueRunner::class);
168
+ $ queueRunner = $ this ->objectManager -> get (QueueRunner::class);
170
169
$ queueRunner ->executeFull ();
171
170
$ queueRunner ->executeFull ();
172
171
$ queueRunner ->executeFull ();
@@ -181,19 +180,16 @@ public function testSettings()
181
180
$ this ->assertFalse (empty ($ settings ['searchableAttributes ' ]), 'SearchableAttributes should be set, but they are not. ' );
182
181
}
183
182
184
- /**
185
- * @magentoDbIsolation disabled
186
- */
187
183
public function testMergeSettings ()
188
184
{
189
- $ this ->setConfig (' algoliasearch_queue/queue/active ' , '1 ' );
190
- $ this ->setConfig (' algoliasearch_queue/queue/number_of_job_to_run ' , 1 );
191
- $ this ->setConfig (' algoliasearch_advanced/queue/number_of_element_by_page ' , 300 );
185
+ $ this ->setConfig (ConfigHelper:: IS_ACTIVE , '1 ' );
186
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_JOB_TO_RUN , 1 );
187
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE , 300 );
192
188
193
189
$ this ->connection ->query ('DELETE FROM algoliasearch_queue ' );
194
190
195
191
/** @var Product $productIndexer */
196
- $ productIndexer = $ this ->getObjectManager ()-> create (Product::class);
192
+ $ productIndexer = $ this ->objectManager -> get (Product::class);
197
193
$ productIndexer ->executeFull ();
198
194
199
195
$ rows = $ this ->connection ->query ('SELECT * FROM algoliasearch_queue ' )->fetchAll ();
@@ -208,7 +204,7 @@ public function testMergeSettings()
208
204
$ this ->assertEquals (['sku ' ], $ settings ['disableTypoToleranceOnAttributes ' ]);
209
205
210
206
/** @var QueueRunner $queueRunner */
211
- $ queueRunner = $ this ->getObjectManager ()-> create (QueueRunner::class);
207
+ $ queueRunner = $ this ->objectManager -> get (QueueRunner::class);
212
208
$ queueRunner ->executeFull ();
213
209
214
210
$ this ->algoliaHelper ->waitLastTask ();
@@ -223,9 +219,6 @@ public function testMergeSettings()
223
219
$ this ->assertEquals (['sku ' ], $ settings ['disableTypoToleranceOnAttributes ' ]);
224
220
}
225
221
226
- /**
227
- * @magentoDbIsolation disabled
228
- */
229
222
public function testMerging ()
230
223
{
231
224
$ this ->connection ->query ('DELETE FROM algoliasearch_queue ' );
@@ -434,9 +427,6 @@ public function testMerging()
434
427
$ this ->assertEquals ($ expectedProductJob , $ productJob ->toArray ());
435
428
}
436
429
437
- /**
438
- * @magentoDbIsolation disabled
439
- */
440
430
public function testMergingWithStaticMethods ()
441
431
{
442
432
$ this ->connection ->query ('TRUNCATE TABLE algoliasearch_queue ' );
@@ -587,13 +577,8 @@ public function testMergingWithStaticMethods()
587
577
$ this ->assertEquals ('rebuildStoreProductIndex ' , $ jobs [11 ]->getMethod ());
588
578
}
589
579
590
- /**
591
- * @magentoDbIsolation disabled
592
- */
593
580
public function testGetJobs ()
594
581
{
595
- $ this ->markTestIncomplete (self ::INCOMPLETE_REASON );
596
-
597
582
$ this ->connection ->query ('TRUNCATE TABLE algoliasearch_queue ' );
598
583
599
584
$ data = [
@@ -740,18 +725,12 @@ public function testGetJobs()
740
725
741
726
$ expectedFirstJob = [
742
727
'job_id ' => '1 ' ,
743
- 'created ' => '2017-09-01 12:00:00 ' ,
744
- 'pid ' => null ,
728
+ 'pid ' => $ pid ,
745
729
'class ' => \Algolia \AlgoliaSearch \Helper \Data::class,
746
730
'method ' => 'rebuildStoreCategoryIndex ' ,
747
731
'data ' => '{"store_id":"1","category_ids":["9","22"]} ' ,
748
- 'max_retries ' => '3 ' ,
749
- 'retries ' => '0 ' ,
750
- 'error_log ' => '' ,
751
- 'data_size ' => 3 ,
752
732
'merged_ids ' => ['1 ' , '7 ' ],
753
733
'store_id ' => '1 ' ,
754
- 'is_full_reindex ' => 0 ,
755
734
'decoded_data ' => [
756
735
'store_id ' => '1 ' ,
757
736
'category_ids ' => [
@@ -760,43 +739,48 @@ public function testGetJobs()
760
739
2 => '40 ' ,
761
740
],
762
741
],
763
- 'locked_at ' => null ,
764
- 'debug ' => null ,
765
742
];
766
743
767
744
$ expectedLastJob = [
768
745
'job_id ' => '6 ' ,
769
- 'created ' => '2017-09-01 12:00:00 ' ,
770
- 'pid ' => null ,
746
+ 'pid ' => $ pid ,
771
747
'class ' => \Algolia \AlgoliaSearch \Helper \Data::class,
772
748
'method ' => 'rebuildStoreProductIndex ' ,
773
749
'data ' => '{"store_id":"3","product_ids":["448"]} ' ,
774
- 'max_retries ' => '3 ' ,
775
- 'retries ' => '0 ' ,
776
- 'error_log ' => '' ,
777
- 'data_size ' => 2 ,
778
750
'merged_ids ' => ['6 ' , '12 ' ],
779
751
'store_id ' => '3 ' ,
780
- 'is_full_reindex ' => 0 ,
781
752
'decoded_data ' => [
782
753
'store_id ' => '3 ' ,
783
754
'product_ids ' => [
784
755
0 => '448 ' ,
785
756
1 => '405 ' ,
786
757
],
787
758
],
788
- 'locked_at ' => null ,
789
- 'debug ' => null ,
790
759
];
791
760
792
761
/** @var Job $firstJob */
793
762
$ firstJob = reset ($ jobs );
763
+ $ firstJob = $ firstJob ->toArray ();
794
764
795
765
/** @var Job $lastJob */
796
766
$ lastJob = end ($ jobs );
767
+ $ lastJob = $ lastJob ->toArray ();
768
+
769
+ $ valuesToCheck = [
770
+ 'job_id ' ,
771
+ 'method ' ,
772
+ 'class ' ,
773
+ 'store_id ' ,
774
+ 'pid ' ,
775
+ 'data ' ,
776
+ 'merged_ids ' ,
777
+ 'decoded_data ' ,
778
+ ];
797
779
798
- $ this ->assertEquals ($ expectedFirstJob , $ firstJob ->toArray ());
799
- $ this ->assertEquals ($ expectedLastJob , $ lastJob ->toArray ());
780
+ foreach ($ valuesToCheck as $ valueToCheck ) {
781
+ $ this ->assertEquals ($ expectedFirstJob [$ valueToCheck ], $ firstJob [$ valueToCheck ]);
782
+ $ this ->assertEquals ($ expectedLastJob [$ valueToCheck ], $ lastJob [$ valueToCheck ]);
783
+ }
800
784
801
785
$ dbJobs = $ this ->connection ->query ('SELECT * FROM algoliasearch_queue ' )->fetchAll ();
802
786
@@ -807,14 +791,11 @@ public function testGetJobs()
807
791
}
808
792
}
809
793
810
- /**
811
- * @magentoDbIsolation disabled
812
- */
813
794
public function testHugeJob ()
814
795
{
815
796
// Default value - maxBatchSize = 1000
816
- $ this ->setConfig (' algoliasearch_queue/queue/number_of_job_to_run ' , 10 );
817
- $ this ->setConfig (' algoliasearch_advanced/queue/number_of_element_by_page ' , 100 );
797
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_JOB_TO_RUN , 10 );
798
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE , 100 );
818
799
819
800
$ productIds = range (1 , 5000 );
820
801
$ jsonProductIds = json_encode ($ productIds );
@@ -851,8 +832,8 @@ public function testHugeJob()
851
832
public function testMaxSingleJobSize ()
852
833
{
853
834
// Default value - maxBatchSize = 1000
854
- $ this ->setConfig (' algoliasearch_queue/queue/number_of_job_to_run ' , 10 );
855
- $ this ->setConfig (' algoliasearch_advanced/queue/number_of_element_by_page ' , 100 );
835
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_JOB_TO_RUN , 10 );
836
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE , 100 );
856
837
857
838
$ productIds = range (1 , 99 );
858
839
$ jsonProductIds = json_encode ($ productIds );
@@ -889,25 +870,22 @@ public function testMaxSingleJobSize()
889
870
$ this ->assertEquals ($ pid , $ lastJob ['pid ' ]);
890
871
}
891
872
892
- /**
893
- * @magentoDbIsolation disabled
894
- */
895
873
public function testMaxSingleJobsSizeOnProductReindex ()
896
874
{
897
875
$ this ->resetConfigs ([
898
- ' algoliasearch_queue/queue/number_of_job_to_run ' ,
899
- ' algoliasearch_advanced/queue/number_of_element_by_page ' ,
876
+ ConfigHelper:: NUMBER_OF_JOB_TO_RUN ,
877
+ ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE ,
900
878
]);
901
879
902
- $ this ->setConfig (' algoliasearch_queue/queue/active ' , '1 ' );
880
+ $ this ->setConfig (ConfigHelper:: IS_ACTIVE , '1 ' );
903
881
904
- $ this ->setConfig (' algoliasearch_queue/queue/number_of_job_to_run ' , 10 );
905
- $ this ->setConfig (' algoliasearch_advanced/queue/number_of_element_by_page ' , 100 );
882
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_JOB_TO_RUN , 10 );
883
+ $ this ->setConfig (ConfigHelper:: NUMBER_OF_ELEMENT_BY_PAGE , 100 );
906
884
907
885
$ this ->connection ->query ('TRUNCATE TABLE algoliasearch_queue ' );
908
886
909
887
/** @var Product $indexer */
910
- $ indexer = $ this ->getObjectManager ()-> create (Product::class);
888
+ $ indexer = $ this ->objectManager -> get (Product::class);
911
889
$ indexer ->execute (range (1 , 512 ));
912
890
913
891
$ dbJobs = $ this ->connection ->query ('SELECT * FROM algoliasearch_queue ' )->fetchAll ();
0 commit comments