2828import org .springframework .ai .embedding .EmbeddingOptionsBuilder ;
2929import org .springframework .ai .embedding .EmbeddingResponse ;
3030import org .springframework .ai .embedding .EmbeddingResultMetadata ;
31+ import org .springframework .ai .retry .autoconfigure .SpringAiRetryAutoConfiguration ;
3132import org .springframework .ai .vertexai .embedding .multimodal .VertexAiMultimodalEmbeddingModel ;
3233import org .springframework .ai .vertexai .embedding .text .VertexAiTextEmbeddingModel ;
3334import org .springframework .boot .autoconfigure .AutoConfigurations ;
@@ -52,12 +53,13 @@ public class VertexAiTextEmbeddingModelAutoConfigurationIT {
5253
5354 @ Test
5455 public void textEmbedding () {
55- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
56+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
5657 .run (context -> {
5758 var connectionProperties = context .getBean (VertexAiEmbeddingConnectionProperties .class );
5859 var textEmbeddingProperties = context .getBean (VertexAiTextEmbeddingProperties .class );
5960
6061 assertThat (connectionProperties ).isNotNull ();
62+ assertThat (textEmbeddingProperties ).isNotNull ();
6163
6264 VertexAiTextEmbeddingModel embeddingModel = context .getBean (VertexAiTextEmbeddingModel .class );
6365 assertThat (embeddingModel ).isInstanceOf (VertexAiTextEmbeddingModel .class );
@@ -71,21 +73,21 @@ public void textEmbedding() {
7173
7274 @ Test
7375 void textEmbeddingActivation () {
74- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
76+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
7577 .withPropertyValues ("spring.ai.model.embedding.text=none" )
7678 .run (context -> {
7779 assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isEmpty ();
7880 assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isEmpty ();
7981 });
8082
81- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
83+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
8284 .withPropertyValues ("spring.ai.model.embedding.text=vertexai" )
8385 .run (context -> {
8486 assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isNotEmpty ();
8587 assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isNotEmpty ();
8688 });
8789
88- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiTextEmbeddingAutoConfiguration .class ))
90+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiTextEmbeddingAutoConfiguration .class ))
8991 .run (context -> {
9092 assertThat (context .getBeansOfType (VertexAiTextEmbeddingProperties .class )).isNotEmpty ();
9193 assertThat (context .getBeansOfType (VertexAiTextEmbeddingModel .class )).isNotEmpty ();
@@ -95,12 +97,13 @@ void textEmbeddingActivation() {
9597
9698 @ Test
9799 public void multimodalEmbedding () {
98- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
100+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
99101 .run (context -> {
100102 var connectionProperties = context .getBean (VertexAiEmbeddingConnectionProperties .class );
101103 var multimodalEmbeddingProperties = context .getBean (VertexAiMultimodalEmbeddingProperties .class );
102104
103105 assertThat (connectionProperties ).isNotNull ();
106+ assertThat (multimodalEmbeddingProperties ).isNotNull ();
104107
105108 VertexAiMultimodalEmbeddingModel multiModelEmbeddingModel = context
106109 .getBean (VertexAiMultimodalEmbeddingModel .class );
@@ -129,26 +132,37 @@ public void multimodalEmbedding() {
129132
130133 @ Test
131134 void multimodalEmbeddingActivation () {
132- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
135+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
133136 .withPropertyValues ("spring.ai.model.embedding.multimodal=none" )
134137 .run (context -> {
135138 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isEmpty ();
136139 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isEmpty ();
137140 });
138141
139- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
142+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
140143 .withPropertyValues ("spring.ai.model.embedding.multimodal=vertexai" )
141144 .run (context -> {
142145 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isNotEmpty ();
143146 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isNotEmpty ();
144147 });
145148
146- this .contextRunner .withConfiguration (AutoConfigurations . of (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
149+ this .contextRunner .withConfiguration (vertexAiAutoConfig (VertexAiMultiModalEmbeddingAutoConfiguration .class ))
147150 .run (context -> {
148151 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingProperties .class )).isNotEmpty ();
149152 assertThat (context .getBeansOfType (VertexAiMultimodalEmbeddingModel .class )).isNotEmpty ();
150153 });
151154
152155 }
153156
157+ private static AutoConfigurations vertexAiAutoConfig (Class <?>... additionalAutoConfigurations ) {
158+ Class <?>[] dependencies = new Class [] { SpringAiRetryAutoConfiguration .class ,
159+ VertexAiEmbeddingConnectionAutoConfiguration .class };
160+ Class <?>[] allAutoConfigurations = new Class [dependencies .length + additionalAutoConfigurations .length ];
161+ System .arraycopy (dependencies , 0 , allAutoConfigurations , 0 , dependencies .length );
162+ System .arraycopy (additionalAutoConfigurations , 0 , allAutoConfigurations , dependencies .length ,
163+ additionalAutoConfigurations .length );
164+
165+ return AutoConfigurations .of (allAutoConfigurations );
166+ }
167+
154168}
0 commit comments