hyperledger-archives / aries-cloudagent-loadgenerator

aries-cloudagent-loadgenerator
https://wiki.hyperledger.org/display/aries
Apache License 2.0
17 stars 11 forks source link

Run tests for AcaPy with multitenancy mode enabled #50

Closed PaulWen closed 2 years ago

PaulWen commented 2 years ago

We first need to create a test flow that generates load across many AcaPy sub-wallets: https://github.com/My-DIGI-ID/aries-cloudagent-loadgenerator/issues/57

PaulWen commented 2 years ago

AcaPy seems to offer the same peak performance if multitenancy is enabled

PaulWen commented 2 years ago

AcaPy performance drops significantly if multitenancy is enabled and more than one sub wallet is used

Errors are returned by the database:

Without Multitenancy 400 iterations per minute: Revokable/Full Flow Increasing Load/04 AcaPy 0_7_3 askar_wallet

1 Sub-Wallet 400 iterations per minute: Revokable/Full Flow Increasing Load/01 AcaPy 0_7_3 askar_wallet

2 Sub-Wallets 350 iterations per minute: Revokable/Full Flow Increasing Load/03 AcaPy 0_7_3 askar_wallet

3 Sub-Wallets 120 iterations per minute: Revokable/Full Flow Increasing Load/04 AcaPy 0_7_3 askar_wallet

PaulWen commented 2 years ago

Increasing the number of max connections allowed by Postgres and increasing the max number of connections allowed for each Issuer/Verifier AcaPy helps to prevent sorry, too many clients already. and to increase the peek performance

~470 iterations per minute (3 Sub-Wallets; Single Postgres; 200 Connections Max; 10 Connections per AcaPy): Revokable/Full Flow Increasing Load/06 AcaPy 0_7_3 askar_wallet

GHkrishna commented 2 years ago

Hi @PaulWen I tried replicating the load generator (mentioned here: https://github.com/My-DIGI-ID/aries-cloudagent-loadgenerator ). I've Stated 'ENABLEMULTITENANCY=true' in the ./setup/.env file_. However, there are some errors when I try docker run --rm -p 8080:8080 loadgenerator

Heres the log:

11225 INFO  c.b.s.g.GeneratorApplicationKt - Starting GeneratorApplicationKt v0.0.1-SNAPSHOT using Java 17.0.1 on be2a81c8b54e with PID 1 (/app/generator-0.0.1-SNAPSHOT.jar started by root in /app)
11310 INFO  c.b.s.g.GeneratorApplicationKt - The following profiles are active: docker
29616 INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
29833 INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8080"]
29847 INFO  o.a.catalina.core.StandardService - Starting service [Tomcat]
29849 INFO  o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.56]
30428 INFO  o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
30429 INFO  o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 18349 ms
33325 ERROR c.b.s.generator.config.AcaPyConfig - Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
33329 WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'acaPyPublisher' defined in URL [jar:file:/app/generator-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/bka/ssi/generator/agents/acapy/AcaPyPublisher.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fullFlow' defined in URL [jar:file:/app/generator-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/bka/ssi/generator/application/testflows/FullFlow.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IssuerVerifier' defined in class path resource [com/bka/ssi/generator/config/AcaPyConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.bka.ssi.generator.domain.services.IAriesClient]: Factory method 'issuerVerifierAriesClient' threw exception; nested exception is java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
33345 INFO  o.a.catalina.core.StandardService - Stopping service [Tomcat]
33451 INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
33653 ERROR o.s.boot.SpringApplication - Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'acaPyPublisher' defined in URL [jar:file:/app/generator-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/bka/ssi/generator/agents/acapy/AcaPyPublisher.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fullFlow' defined in URL [jar:file:/app/generator-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/bka/ssi/generator/application/testflows/FullFlow.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IssuerVerifier' defined in class path resource [com/bka/ssi/generator/config/AcaPyConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.bka.ssi.generator.domain.services.IAriesClient]: Factory method 'issuerVerifierAriesClient' threw exception; nested exception is java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290)
    at com.bka.ssi.generator.GeneratorApplicationKt.main(GeneratorApplication.kt:27)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'fullFlow' defined in URL [jar:file:/app/generator-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/com/bka/ssi/generator/application/testflows/FullFlow.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IssuerVerifier' defined in class path resource [com/bka/ssi/generator/config/AcaPyConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.bka.ssi.generator.domain.services.IAriesClient]: Factory method 'issuerVerifierAriesClient' threw exception; nested exception is java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1607)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1571)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveMultipleBeans(DefaultListableBeanFactory.java:1460)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1347)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
    ... 27 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'IssuerVerifier' defined in class path resource [com/bka/ssi/generator/config/AcaPyConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.bka.ssi.generator.domain.services.IAriesClient]: Factory method 'issuerVerifierAriesClient' threw exception; nested exception is java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
    ... 44 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.bka.ssi.generator.domain.services.IAriesClient]: Factory method 'issuerVerifierAriesClient' threw exception; nested exception is java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
    ... 58 common frames omitted
Caused by: java.lang.Exception: Unable to create a new sub wallet. Has the multitenancy mode been enabled for the AcaPy?
    at com.bka.ssi.generator.config.AcaPyConfig.createNewSubWallet(AcaPyConfig.kt:145)
    at com.bka.ssi.generator.config.AcaPyConfig.issuerVerifierClientWithMultitenancyEnabled(AcaPyConfig.kt:101)
    at com.bka.ssi.generator.config.AcaPyConfig.issuerVerifierAriesClient(AcaPyConfig.kt:66)
    at com.bka.ssi.generator.config.AcaPyConfig$$EnhancerBySpringCGLIB$$29d893ee.CGLIB$issuerVerifierAriesClient$1(<generated>)
    at com.bka.ssi.generator.config.AcaPyConfig$$EnhancerBySpringCGLIB$$29d893ee$$FastClassBySpringCGLIB$$d1aa226d.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
    at com.bka.ssi.generator.config.AcaPyConfig$$EnhancerBySpringCGLIB$$29d893ee.issuerVerifierAriesClient(<generated>)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 59 common frames omitted
07:13:53,595 |-ERROR in com.github.loki4j.client.pipeline.DefaultPipeline@54e98074 - Error while sending Batch #50ddbda4b6b (15,331 bytes) to Loki (http://loki:3100/loki/api/v1/push) java.net.ConnectException
    at java.net.ConnectException
    at  at java.net.http/jdk.internal.net.http.HttpClientImpl.send(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.HttpClientFacade.send(Unknown Source)
    at  at com.github.loki4j.client.http.JavaHttpClient.send(JavaHttpClient.java:66)
    at  at com.github.loki4j.client.pipeline.DefaultPipeline.sendBatch(DefaultPipeline.java:263)
    at  at com.github.loki4j.client.pipeline.DefaultPipeline.sendStep(DefaultPipeline.java:249)
    at  at com.github.loki4j.client.pipeline.DefaultPipeline.runSendLoop(DefaultPipeline.java:183)
    at  at com.github.loki4j.client.pipeline.DefaultPipeline.lambda$start$2(DefaultPipeline.java:108)
    at  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at  at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException
    at  at java.net.http/jdk.internal.net.http.common.Utils.toConnectException(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.PlainHttpConnection.connectAsync(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Http1Exchange.sendHeadersAsync(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.lambda$responseAsyncImpl0$9(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.checkFor407(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.lambda$responseAsyncImpl0$10(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.uniHandle(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.handle(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl0(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.responseAsyncImpl(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.Exchange.responseAsync(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.uniHandle(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.uniHandleStage(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.handle(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.MultiExchange.responseAsyncImpl(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(Unknown Source)
    at  at java.base/java.util.concurrent.CompletableFuture.completeAsync(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.MultiExchange.responseAsync(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.HttpClientImpl.sendAsync(Unknown Source)
    at  ... 10 common frames omitted
Caused by: java.nio.channels.UnresolvedAddressException
    at  at java.base/sun.nio.ch.Net.checkAddress(Unknown Source)
    at  at java.base/sun.nio.ch.Net.checkAddress(Unknown Source)
    at  at java.base/sun.nio.ch.SocketChannelImpl.checkRemote(Unknown Source)
    at  at java.base/sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
    at  at java.net.http/jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(Unknown Source)
    at  at java.base/java.security.AccessController.doPrivileged(Unknown Source)
    at  ... 35 common frames omitted

I can't exactly figure out what might be the reason behind this. It would be great if you could point out any mistakes on my end. Also, let me know if any additional info is required. Thank you :)

PaulWen commented 2 years ago

Hi @GHkrishna, are you trying to start the load-generator only?

It is intended to start the whole system via ./setup/manage.sh start. Within ./setup/manage.sh further environment variables are set (e.g. to enable the multitenancy flags for the AcaPy).

GHkrishna commented 2 years ago

I'm trying to start the entire system.

Within ./setup/manage.sh further environment variables are set (e.g. to enable the multitenancy flags for the AcaPy).

Yup, got it.

Ok so to start the entire setup do I do not need to run the two Docker Setup commands after the ./setup/manage.sh start. I only need to use ./setup/manage.sh start

PaulWen commented 2 years ago

Sorry for the confusion, I just updated the Readme, hopefully, this clears things up. Thank you for the feedback!

Testing the main branch on an Ubuntu system I ran into the same error as you did. The bug should now be fixed. Please excuse the inconvenience and thank you for reporting the issue!

You should now be able to just run manage.sh start and the whole system should start successfully. So no need for the Docker Setup section.

GHkrishna commented 2 years ago

Hi, @PaulWen Thanks for the update, the error now seems to be resolved. Also, the Readme.md makes more sense now.Thank you for your assistance.

Just to add there seems to be a couple of other errors popping out: 1) When we first use ./setup/manage.sh start, the following is displayed:

Step 9/9 : RUN mkdir -p     $HOME/cli-scripts     && chmod -R ug+rw $HOME/cli-scripts
 ---> Using cache
 ---> 0d95d5c34efa
Successfully built 0d95d5c34efa
Successfully tagged von-network-base:latest

Using: docker-compose --log-level ERROR

Creating von_node2_1     ... done
Creating von_node1_1     ... done
Creating von_node4_1     ... done
Creating von_webserver_1 ... done
Creating von_node3_1     ... done
Want to see the scrolling container logs? Run "./manage logs"
Waiting for the ledger to start... (sleeping 30 seconds)
Registering issuer DID...
{"detail": "Not ready"}Starting dashboard and logging containers ...
Define and run multi-container applications with Docker.

According to what I understand, this might be because of the serial wise starting of containers. The system believes that the ledger is not yet up and hence it is unable to register a did. Please, add what you think might be the reason behind this. The error goes away as soon as I rerun the start command (without first using ./setup/manage.sh down) and the did is registered successfully.

2) As mentioned above, the rerunning of start command registers the did successfully as follows:

Step 9/9 : RUN mkdir -p     $HOME/cli-scripts     && chmod -R ug+rw $HOME/cli-scripts
 ---> Using cache
 ---> 0d95d5c34efa
Successfully built 0d95d5c34efa
Successfully tagged von-network-base:latest

Using: docker-compose --log-level ERROR

Want to see the scrolling container logs? Run "./manage logs"
Waiting for the ledger to start... (sleeping 30 seconds)
Registering issuer DID...
{
  "did": "VfHmVDbSvAdnM7Ph2PFh2a",
  "seed": "Z7wnGIbb6amj4mMGmkeCER5zD75VYYgC",
  "verkey": "Gd1EdeyirPZQjynN8aSJx4zRrZD961xtRginavLBrqKK"
}Starting dashboard and logging containers ...
Define and run multi-container applications with Docker.

All the containers are up and running. And, there seems to be no error on start-up.

But as the Readme file mentions,

The whole analysis setup is started automatically when starting the test environment and available under http://localhost:3000/d/0Pe9llbnz/test-results.

The problem that I face is no such interface is available at the specified port/url (I've updated the .env file, as specified even though this shouldn't be the cause). Here's the docker version I'm using (if that matters):

PS: Can this be related with the stopping of previously running containers. Because I get the following errors with ./setup/manage.sh down,

Stopping the VON Network and deleting ledger data ...

Using: docker-compose --log-level ERROR

Stopping and removing any running containers ...
Stopping von_node3_1     ... done
Stopping von_webserver_1 ... done
Stopping von_node1_1     ... done
Stopping von_node4_1     ... done
Stopping von_node2_1     ... done
Removing von_node3_1     ... done
Removing von_webserver_1 ... done
Removing von_node1_1     ... done
Removing von_node4_1     ... done
Removing von_node2_1     ... done
Stopping load generator ...
ERROR: The Compose file '././load-generator/docker-compose-load-generator.yml' is invalid because:
Unsupported config option for services.load-generator-1: 'profiles'
Unsupported config option for services.load-generator-2: 'profiles'
Unsupported config option for services.load-generator-3: 'profiles'
Unsupported config option for services.load-generator-4: 'profiles'
Unsupported config option for services.load-generator-5: 'profiles'
PaulWen commented 2 years ago

(1): I think you are correct, the Ledger is not yet ready. Increasing the sleep time from 30 seconds to 60 seconds might be a workaround too.

(2): Running docker ps you should see a container grafana linked to port 3000 is this the case for you? If not make the logs of grafana provide more insights?

I am able to run it successfully using MacOS, docker version 20.10.10 and docker-compose version 1.29.2.