pravega / pravega-benchmark

Performance benchmark tool for Pravega
Apache License 2.0
8 stars 22 forks source link

Doesn't work without keycloak configuration file #104

Closed OlegKashtanov closed 4 years ago

OlegKashtanov commented 4 years ago

Pravega benchmark doesn't work in unsecure mode.

commonsCLIVersion=1.3.1 commonsCSVVersion=1.5 commonsMathVersion=3.6.1 commonsIOVersion=1.3.2 pravegaVersion=0.8.0-2508.30406cf-SNAPSHOT pravegaKeycloakVersion=0.7.0-13.8cd1997-SNAPSHOT slf4jSimpleVersion=1.7.14

Trying to run benchmark: /opt/pravega-benchmark/bin/pravega-benchmark -controller tcp://pravega-pravega-controller.default.svc.cluster.local:9090 -scope scope-1 -enableConnectionPooling false -events 200000 -stream stream-s100-p1-XYZ -segments 48 -producers 5 -size 100 -time 60

And get:


ead=false, producerCount=5, consumerCount=0, segmentCount=48, segmentScaleKBps=0, segmentScaleEventsPerSecond=0, scaleFactor=2, events=200000, eventsPerSec=40000, eventsPerProducer=40000, eventsPerConsumer=0,
EventsPerFlush=2147483647, transactionPerCommit=0, runtimeSec=60, throughput=-1.0, writeFile='null', readFile='null', startTime=1584900162843, enableConnectionPooling=false, writeWatermarkPeriodMillis=-1, rea$
WatermarkPeriodMillis=-1
Exception in thread "main" java.util.ServiceConfigurationError: io.pravega.client.stream.impl.Credentials: Provider io.pravega.keycloak.client.PravegaKeycloakCredentials could not be instantiated
        at java.util.ServiceLoader.fail(ServiceLoader.java:232)
        at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at io.pravega.client.ClientConfig$ClientConfigBuilder.credentialFromMap(ClientConfig.java:277)
        at io.pravega.client.ClientConfig$ClientConfigBuilder.extractCredentialsFromEnv(ClientConfig.java:264)
        at io.pravega.client.ClientConfig$ClientConfigBuilder.extractCredentials(ClientConfig.java:231)
        at io.pravega.client.ClientConfig$ClientConfigBuilder.extractCredentials(ClientConfig.java:213)
        at io.pravega.client.ClientConfig$ClientConfigBuilder.build(ClientConfig.java:195)
        at io.pravega.client.stream.impl.ControllerImplConfig$ControllerImplConfigBuilder.<init>(ControllerImplConfig.java:37)
        at io.pravega.client.stream.impl.ControllerImplConfig.builder(ControllerImplConfig.java:20)
        at io.pravega.perf.PravegaPerfTest$PravegaTest.<init>(PravegaPerfTest.java:425)
        at io.pravega.perf.PravegaPerfTest.createTest(PravegaPerfTest.java:173)
        at io.pravega.perf.PravegaPerfTest.main(PravegaPerfTest.java:118)
Caused by: io.pravega.keycloak.client.KeycloakConfigurationException: Unable to resolve a Keycloak client configuration for Pravega authentication purposes.

Use one of the following approaches to provide a client configuration (in Keycloak OIDC JSON format):
1. Use a builder method to set the path to a file.
2. Set the environment variable 'KEYCLOAK_SERVICE_ACCOUNT_FILE' to the path to a file.
3. Update the classpath to contain a resource named 'keycloak.json'.

        at io.pravega.keycloak.client.KeycloakAuthzClient$Builder.lambda$build$0(KeycloakAuthzClient.java:193)
        at java.util.Optional.orElseThrow(Optional.java:290)
        at io.pravega.keycloak.client.KeycloakAuthzClient$Builder.build(KeycloakAuthzClient.java:193)
        at io.pravega.keycloak.client.PravegaKeycloakCredentials.init(PravegaKeycloakCredentials.java:48)
        at io.pravega.keycloak.client.PravegaKeycloakCredentials.<init>(PravegaKeycloakCredentials.java:31)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
        ... 12 more
command terminated with exit code 1```
OlegKashtanov commented 4 years ago

Found how to resolve it: just set environment variable pravega_client_auth_loadDynamic=false.