88package org .elasticsearch .xpack .transform ;
99
1010import org .elasticsearch .action .ActionListener ;
11+ import org .elasticsearch .common .util .concurrent .EsExecutors ;
1112import org .elasticsearch .core .CheckedConsumer ;
13+ import org .elasticsearch .core .Tuple ;
1214import org .elasticsearch .test .ESTestCase ;
15+ import org .elasticsearch .threadpool .ThreadPool ;
1316import org .elasticsearch .xpack .core .transform .TransformConfigVersion ;
1417import org .elasticsearch .xpack .core .transform .TransformMessages ;
1518import org .elasticsearch .xpack .core .transform .transforms .SettingsConfig ;
1821import org .elasticsearch .xpack .core .transform .transforms .pivot .GroupConfigTests ;
1922import org .elasticsearch .xpack .core .transform .transforms .pivot .PivotConfig ;
2023import org .elasticsearch .xpack .transform .notifications .TransformAuditor ;
24+ import org .elasticsearch .xpack .transform .persistence .SeqNoPrimaryTermAndIndex ;
2125import org .elasticsearch .xpack .transform .persistence .TransformConfigManager ;
2226import org .elasticsearch .xpack .transform .telemetry .TransformMeterRegistry ;
2327import org .junit .Before ;
4044import static org .mockito .Mockito .only ;
4145import static org .mockito .Mockito .verify ;
4246import static org .mockito .Mockito .verifyNoInteractions ;
47+ import static org .mockito .Mockito .when ;
4348
4449public class TransformConfigAutoMigrationTests extends ESTestCase {
4550 private TransformConfigManager transformConfigManager ;
@@ -51,8 +56,10 @@ public void setUp() throws Exception {
5156 super .setUp ();
5257 transformConfigManager = mock ();
5358 auditor = mock ();
59+ ThreadPool threadPool = mock ();
60+ when (threadPool .generic ()).thenReturn (EsExecutors .DIRECT_EXECUTOR_SERVICE );
5461
55- autoMigration = new TransformConfigAutoMigration (transformConfigManager , auditor , TransformMeterRegistry .noOp ());
62+ autoMigration = new TransformConfigAutoMigration (transformConfigManager , auditor , TransformMeterRegistry .noOp (), threadPool );
5663 }
5764
5865 protected boolean enableWarningsCheck () {
@@ -127,32 +134,59 @@ private void testMigration(TransformConfig config, CheckedConsumer<TransformConf
127134
128135 public void testMigrateAndSaveSuccess () throws InterruptedException {
129136 doAnswer (ans -> {
130- ActionListener <Boolean > listener = ans .getArgument (1 );
137+ ActionListener <Boolean > listener = ans .getArgument (2 );
131138 listener .onResponse (true );
132139 return null ;
133- }).when (transformConfigManager ).putTransformConfiguration ( any (), any ());
140+ }).when (transformConfigManager ).updateTransformConfiguration ( any (), any (), any ());
134141 var originalConfig = randomTransformConfigWithDeprecatedSettings ();
142+ doAnswer (ans -> {
143+ ActionListener <Tuple <TransformConfig , SeqNoPrimaryTermAndIndex >> listener = ans .getArgument (1 );
144+ listener .onResponse (Tuple .tuple (originalConfig , mock ()));
145+ return null ;
146+ }).when (transformConfigManager ).getTransformConfigurationForUpdate (any (), any ());
135147
136148 testMigration (originalConfig , updatedConfig -> {
137149 assertThatMaxPageSearchSizeMigrated (updatedConfig , originalConfig );
138150 verify (auditor , only ()).info (eq (updatedConfig .getId ()), eq (TransformMessages .MAX_PAGE_SEARCH_SIZE_MIGRATION ));
139151 });
140152 }
141153
142- public void testMigrateAndSaveWithErrors () throws InterruptedException {
154+ public void testMigrateAndSaveWithGetSequenceError () throws InterruptedException {
155+ var originalConfig = randomTransformConfigWithDeprecatedSettings ();
143156 doAnswer (ans -> {
144- ActionListener <Boolean > listener = ans .getArgument (1 );
145- listener .onFailure (new IllegalStateException ("This is a failure" ));
157+ ActionListener <? > listener = ans .getArgument (1 );
158+ listener .onFailure (new IllegalStateException ("This is a getSequence failure. " ));
146159 return null ;
147- }).when (transformConfigManager ).putTransformConfiguration (any (), any ());
160+ }).when (transformConfigManager ).getTransformConfigurationForUpdate (any (), any ());
161+
162+ testMigration (originalConfig , updatedConfig -> {
163+ assertThat (updatedConfig , sameInstance (originalConfig ));
164+ verify (auditor , only ()).warning (
165+ eq (originalConfig .getId ()),
166+ eq ("Failed to auto-migrate Config. Please see Elasticsearch logs. Continuing with old config." )
167+ );
168+ });
169+ }
170+
171+ public void testMigrateAndSaveWithUpdateError () throws InterruptedException {
172+ doAnswer (ans -> {
173+ ActionListener <Boolean > listener = ans .getArgument (2 );
174+ listener .onFailure (new IllegalStateException ("This is an update failure" ));
175+ return null ;
176+ }).when (transformConfigManager ).updateTransformConfiguration (any (), any (), any ());
148177 var originalConfig = randomTransformConfigWithDeprecatedSettings ();
178+ doAnswer (ans -> {
179+ ActionListener <Tuple <TransformConfig , SeqNoPrimaryTermAndIndex >> listener = ans .getArgument (1 );
180+ listener .onResponse (Tuple .tuple (originalConfig , mock ()));
181+ return null ;
182+ }).when (transformConfigManager ).getTransformConfigurationForUpdate (any (), any ());
149183
150184 testMigration (originalConfig , updatedConfig -> {
151185 assertThat (updatedConfig , sameInstance (originalConfig ));
152186 verify (auditor ).info (eq (updatedConfig .getId ()), eq (TransformMessages .MAX_PAGE_SEARCH_SIZE_MIGRATION ));
153187 verify (auditor ).warning (
154188 eq (originalConfig .getId ()),
155- eq ("Failed to persist auto-migrated Config. Please see Elasticsearch logs. Continuing with old config." )
189+ eq ("Failed to auto-migrate Config. Please see Elasticsearch logs. Continuing with old config." )
156190 );
157191 });
158192 }
0 commit comments