Skip to content

Commit d608392

Browse files
committed
supporting appHttpPipelines for middleware
Signed-off-by: salaboy <[email protected]>
1 parent 42b2d88 commit d608392

File tree

7 files changed

+99
-5
lines changed

7 files changed

+99
-5
lines changed

spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
public class DaprTestContainersConfig {
3636

3737
@Bean
38-
public Network getDaprNetwork() {
38+
public Network getNetwork() {
3939
Network defaultDaprNetwork = new Network() {
4040
@Override
4141
public String getId() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.dapr.testcontainers;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
6+
public class AppHttpPipeline implements ConfigurationSettings {
7+
private List<ListEntry> handlers;
8+
9+
public AppHttpPipeline(){}
10+
11+
public AppHttpPipeline(List<ListEntry> handlers){
12+
this.handlers = Collections.unmodifiableList(handlers);
13+
}
14+
15+
public List<ListEntry> getHandlers(){
16+
return handlers;
17+
}
18+
19+
}

testcontainers-dapr/src/main/java/io/dapr/testcontainers/Configuration.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
public class Configuration {
2020
private final String name;
2121
private final TracingConfigurationSettings tracing;
22+
private final AppHttpPipeline appHttpPipeline;
2223

23-
//@TODO: add httpPipeline
2424
//@TODO: add secrets
2525
//@TODO: add components
2626
//@TODO: add accessControl
@@ -30,9 +30,10 @@ public class Configuration {
3030
* @param name Configuration name.
3131
* @param tracing TracingConfigParameters tracing configuration parameters.
3232
*/
33-
public Configuration(String name, TracingConfigurationSettings tracing) {
33+
public Configuration(String name, TracingConfigurationSettings tracing, AppHttpPipeline appHttpPipeline) {
3434
this.name = name;
3535
this.tracing = tracing;
36+
this.appHttpPipeline = appHttpPipeline;
3637
}
3738

3839
public String getName() {
@@ -42,4 +43,8 @@ public String getName() {
4243
public TracingConfigurationSettings getTracing() {
4344
return tracing;
4445
}
46+
47+
public AppHttpPipeline getAppHttpPipeline(){
48+
return appHttpPipeline;
49+
}
4550
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright 2024 The Dapr Authors
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
* Unless required by applicable law or agreed to in writing, software
8+
* distributed under the License is distributed on an "AS IS" BASIS,
9+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
* See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package io.dapr.testcontainers;
15+
16+
public class ListEntry {
17+
private String name;
18+
private String type;
19+
20+
public ListEntry(String name, String type) {
21+
this.name = name;
22+
this.type = type;
23+
}
24+
25+
public String getName() {
26+
return name;
27+
}
28+
29+
public String getType() {
30+
return type;
31+
}
32+
33+
public void setName(String name) {
34+
this.name = name;
35+
}
36+
37+
public void setType(String type) {
38+
this.type = type;
39+
}
40+
}

testcontainers-dapr/src/main/java/io/dapr/testcontainers/converter/ConfigurationYamlConverter.java

+13
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package io.dapr.testcontainers.converter;
22

3+
import io.dapr.testcontainers.AppHttpPipeline;
34
import io.dapr.testcontainers.Configuration;
5+
import io.dapr.testcontainers.ListEntry;
46
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
57
import io.dapr.testcontainers.TracingConfigurationSettings;
68
import io.dapr.testcontainers.ZipkinTracingConfigurationSettings;
79
import org.yaml.snakeyaml.Yaml;
810

911
import java.util.LinkedHashMap;
12+
import java.util.List;
1013
import java.util.Map;
1114

1215
public class ConfigurationYamlConverter implements YamlConverter<Configuration> {
@@ -58,6 +61,16 @@ public String convert(Configuration configuration) {
5861
}
5962

6063
configurationSpec.put("tracing", tracingMap);
64+
65+
}
66+
67+
AppHttpPipeline appHttpPipeline = configuration.getAppHttpPipeline();
68+
if( appHttpPipeline != null ){
69+
Map<String, Object> appHttpPipelineMap = new LinkedHashMap<>();
70+
List<ListEntry> handlers = appHttpPipeline.getHandlers();
71+
appHttpPipelineMap.put("handlers", handlers);
72+
configurationSpec.put("appHttpPipeline", appHttpPipelineMap);
73+
6174
}
6275

6376
configurationProps.put("spec", configurationSpec);

testcontainers-dapr/src/main/java/io/dapr/testcontainers/converter/YamlMapperFactory.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.dapr.testcontainers.converter;
22

3+
import io.dapr.testcontainers.ListEntry;
34
import io.dapr.testcontainers.MetadataEntry;
45
import org.yaml.snakeyaml.DumperOptions;
56
import org.yaml.snakeyaml.Yaml;
@@ -21,6 +22,7 @@ public static Yaml create() {
2122
options.setPrettyFlow(true);
2223
Representer representer = new Representer(options);
2324
representer.addClassTag(MetadataEntry.class, Tag.MAP);
25+
representer.addClassTag(ListEntry.class, Tag.MAP);
2426
return new Yaml(representer);
2527
}
2628
}

testcontainers-dapr/src/test/java/io/dapr/testcontainers/converter/ConfigurationYamlConverterTest.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package io.dapr.testcontainers.converter;
22

3+
import io.dapr.testcontainers.AppHttpPipeline;
34
import io.dapr.testcontainers.Configuration;
45
import io.dapr.testcontainers.DaprContainer;
6+
import io.dapr.testcontainers.ListEntry;
57
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
68
import io.dapr.testcontainers.TracingConfigurationSettings;
79
import org.junit.jupiter.api.Test;
@@ -10,6 +12,9 @@
1012
import static org.junit.jupiter.api.Assertions.assertEquals;
1113
import static org.junit.jupiter.api.Assertions.assertNotNull;
1214

15+
import java.util.ArrayList;
16+
import java.util.List;
17+
1318
class ConfigurationYamlConverterTest {
1419
private final Yaml MAPPER = YamlMapperFactory.create();
1520
private final ConfigurationYamlConverter converter = new ConfigurationYamlConverter(MAPPER);
@@ -28,10 +33,16 @@ public void testConfigurationToYaml() {
2833
null
2934
);
3035

36+
37+
List<ListEntry> handlers = new ArrayList<>();
38+
handlers.add(new ListEntry("alias", "middleware.http.routeralias"));
39+
40+
AppHttpPipeline appHttpPipeline = new AppHttpPipeline(handlers);
41+
3142
DaprContainer dapr = new DaprContainer("daprio/daprd")
3243
.withAppName("dapr-app")
3344
.withAppPort(8081)
34-
.withConfiguration(new Configuration("my-config", tracing))
45+
.withConfiguration(new Configuration("my-config", tracing, appHttpPipeline))
3546
.withAppChannelAddress("host.testcontainers.internal");
3647

3748
Configuration configuration = dapr.getConfiguration();
@@ -50,7 +61,11 @@ public void testConfigurationToYaml() {
5061
+ " otel:\n"
5162
+ " endpointAddress: localhost:4317\n"
5263
+ " isSecure: false\n"
53-
+ " protocol: grpc\n";
64+
+ " protocol: grpc\n"
65+
+ " appHttpPipeline:\n"
66+
+ " handlers:\n"
67+
+ " - name: alias\n"
68+
+ " type: middleware.http.routeralias\n";
5469

5570
assertEquals(expectedConfigurationYaml, configurationYaml);
5671
}

0 commit comments

Comments
 (0)