text:
🛑 GST login is down

In c35581c, GST login (https://services.gst.gov.in/services/login) was down:

HTTP code: 503
Response time: 1652 ms

Resolved: GST login is back up in aa69a60.

source: gharchive/issue

license: MIT

license_type: permissive

license_source: github-api


text:
Processing HTML, AsciiDoc and Markdown with the File Repository

As a developer I want to be able to use files (e.g. HTML, AsciiDoc, Markdown) as the source of documentation for LivingDoc.

Background:
With LivingDoc 2 we want to give our users the option to use any kind of documentation source (Confluence, Jira, HTML files etc.). For this we define the concept of repositories. A repository is an abstraction over any kind of datastore (be it remote or local). Currently we plan at least two repositories for the release of version 2.0:

File Repository
Confluence Repository

This story covers the implementation of a File Repository. This repository will handle files checked in with the source code. Currently planned formats are: HTML, AsciiDoc and Markdown. Implementing a Confluence repository first would take much longer and does not give us any advantages for proofing LivingDoc 2’s quality.
Scope:
This story covers two things which need implementing:

The Document class. This is an abstraction over all possible documentation input. Any source documentation needs to be transformed / parsed into this data structure. It is also the basis for further processing of the documentation as examples.
The FileRepository class. This is the implementation of DocumentRepository for the file system.

There is a base implementation of this in PR #75.
Requirements for the Document implementation:

Any textual information which is not an example is still available for processing.
can represent DecisionTable as well as Scenario examples
The data structure and its parser are extensible (there will be changes and additions to the structure in the future.
The Document class contains all the information of the source document, but not necessarily all formatting. Line breaks and paragraphs in texts should be kept, but colours and other mark-up does not have to be considered.

Requirements for the FileRepository implementation:

Provide fun getDocument(documentIdentifier: String): Document? for document lookup
Support for different DocumentFormat (HTML, Markdown, AsciiDoc)
Root directory and DocumentFormat can be specified in the repository configuration

@BalazsAtWork @Alexander-Miller This is your story :) At least to get you started. I'll add some more acceptance criteria next week and maybe some examples.
@Alexander-Miller Feel free to correct any spelling errors you find ;)

Feels pretty epic to me :)
Why not split the LocalRepository into different repositories depending on format?

@bitterblue lets workshop this on friday

We discussed today that DocumentRepository should be responsible for access to a data store (Confluence, local file system) and provide a stream of content to a DocumentFormat instance (HtmlDocumentFormat, MarkdownDocumentFormat, ...). The responsibility of DocumentFormat is to parse a content stream into our object model of a Document.

Now that we have working parser implementations, and for the sake of getting closer to running an end-to-end test, let's have a look a the existing class hierarchy. I do believe there are questions that need to be answered and improvements and refactorings that can be made.
At the top there's the DocumentRepository which may or may not return a Document. Questions:

Why is the returned Document nullable?
What is the documentIndentifier that needs to be supplied?

The concrete implementations of the DocumentRepository have a DocumentFormat which knows how to provide a Document (non-nullable), given that they receive an appropriate InputStream. Who is responsible for supplying that InputStream?
I would also like to propose some refactoring. As I see it there's 2 questions that need answering that I think are badly answered with the current types: where is the Document and what type of Document is it? I propose we introduce interface(s) for both. The former, let's call it DocumentLocation could know how to supply an InputStream, the latter is already available as the DocumentFormat. A repository would then no longer need subtypes but could simply be instantiated with appropriate references.

authors: Alexander-Miller bitterblue slu-it

license_source: bigquery


text:
springboot project execute mvn test occur error

i use embedded-redis

com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"driver failed programming external connectivity on endpoint serene_swartz (9e1c13fd648d8088d945d066ca9fd5a0412e54d6ea8ad503a4bf5f1c7b4f976e): Bind for 0.0.0.0:6370 failed: port is already allocated"}

	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:293) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:271) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.post(OkHttpInvocationBuilder.java:116) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:31) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:13) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.StartContainerCmdImpl.exec(StartContainerCmdImpl.java:43) ~[testcontainers-1.14.1.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.testcontainers.dockerclient.AuditLoggingDockerClient.lambda$wrappedCommand$14(AuditLoggingDockerClient.java:102) ~[testcontainers-1.14.1.jar:na]
	at com.sun.proxy.$Proxy84.exec(Unknown Source) ~[na:na]
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:409) [testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:315) [testcontainers-1.14.1.jar:na]
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81) ~[duct-tape-1.0.8.jar:na]
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:313) [testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:300) [testcontainers-1.14.1.jar:na]
	at com.playtika.test.common.utils.ContainerUtils.startAndLogTime(ContainerUtils.java:54) ~[testcontainers-common-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration.redis(EmbeddedRedisBootstrapConfiguration.java:107) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.CGLIB$redis$2(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa$$FastClassBySpringCGLIB$$7549759e.invoke(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.redis(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:104) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:70) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127) ~[spring-boot-test-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:44) ~[spring-boot-test-autoconfigure-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) ~[junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) ~[junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) ~[junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) ~[junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) ~[junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) ~[junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) ~[junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) ~[spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) ~[surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) ~[surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) ~[surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) ~[surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) ~[surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) ~[surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) ~[surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418) ~[surefire-booter-2.22.1.jar:2.22.1]
2020-05-09 21:46:15.585 ERROR 14104 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedRedis' defined in com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.testcontainers.containers.GenericContainer]: Factory method 'redis' threw exception; nested exception is org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197) [spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:104) [spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:70) [spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) [spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) [spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) [spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) [spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) [spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127) [spring-boot-test-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:44) [spring-boot-test-autoconfigure-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418) [surefire-booter-2.22.1.jar:2.22.1]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.testcontainers.containers.GenericContainer]: Factory method 'redis' threw exception; nested exception is org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	... 58 common frames omitted
Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:320) ~[testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:300) ~[testcontainers-1.14.1.jar:na]
	at com.playtika.test.common.utils.ContainerUtils.startAndLogTime(ContainerUtils.java:54) ~[testcontainers-common-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration.redis(EmbeddedRedisBootstrapConfiguration.java:107) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.CGLIB$redis$2(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa$$FastClassBySpringCGLIB$$7549759e.invoke(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.redis(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	... 59 common frames omitted
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88) ~[duct-tape-1.0.8.jar:na]
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:313) ~[testcontainers-1.14.1.jar:na]
	... 72 common frames omitted
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:488) ~[testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:315) ~[testcontainers-1.14.1.jar:na]
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81) ~[duct-tape-1.0.8.jar:na]
	... 73 common frames omitted
Caused by: com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"driver failed programming external connectivity on endpoint serene_swartz (9e1c13fd648d8088d945d066ca9fd5a0412e54d6ea8ad503a4bf5f1c7b4f976e): Bind for 0.0.0.0:6370 failed: port is already allocated"}

	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:293) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:271) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.post(OkHttpInvocationBuilder.java:116) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:31) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:13) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.StartContainerCmdImpl.exec(StartContainerCmdImpl.java:43) ~[testcontainers-1.14.1.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.testcontainers.dockerclient.AuditLoggingDockerClient.lambda$wrappedCommand$14(AuditLoggingDockerClient.java:102) ~[testcontainers-1.14.1.jar:na]
	at com.sun.proxy.$Proxy84.exec(Unknown Source) ~[na:na]
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:409) ~[testcontainers-1.14.1.jar:na]
	... 75 common frames omitted

2020-05-09 21:46:15.588 ERROR 14104 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedRedis' defined in com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.testcontainers.containers.GenericContainer]: Factory method 'redis' threw exception; nested exception is org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:197) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:104) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:70) ~[spring-cloud-context-2.0.1.RELEASE.jar:2.0.1.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:75) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:347) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:306) ~[spring-boot-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127) [spring-boot-test-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:44) [spring-boot-test-autoconfigure-2.1.4.RELEASE.jar:2.1.4.RELEASE]
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12]
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12]
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) [spring-test-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159) [surefire-junit4-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) [surefire-booter-2.22.1.jar:2.22.1]
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418) [surefire-booter-2.22.1.jar:2.22.1]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.testcontainers.containers.GenericContainer]: Factory method 'redis' threw exception; nested exception is org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	... 58 common frames omitted
Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:320) ~[testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:300) ~[testcontainers-1.14.1.jar:na]
	at com.playtika.test.common.utils.ContainerUtils.startAndLogTime(ContainerUtils.java:54) ~[testcontainers-common-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration.redis(EmbeddedRedisBootstrapConfiguration.java:107) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.CGLIB$redis$2(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa$$FastClassBySpringCGLIB$$7549759e.invoke(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.playtika.test.redis.EmbeddedRedisBootstrapConfiguration$$EnhancerBySpringCGLIB$$ded686aa.redis(<generated>) ~[embedded-redis-1.63-SNAPSHOT.jar:1.63-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	... 59 common frames omitted
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88) ~[duct-tape-1.0.8.jar:na]
	at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:313) ~[testcontainers-1.14.1.jar:na]
	... 72 common frames omitted
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:488) ~[testcontainers-1.14.1.jar:na]
	at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:315) ~[testcontainers-1.14.1.jar:na]
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81) ~[duct-tape-1.0.8.jar:na]
	... 73 common frames omitted
Caused by: com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"driver failed programming external connectivity on endpoint serene_swartz (9e1c13fd648d8088d945d066ca9fd5a0412e54d6ea8ad503a4bf5f1c7b4f976e): Bind for 0.0.0.0:6370 failed: port is already allocated"}

	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:293) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.execute(OkHttpInvocationBuilder.java:271) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.okhttp.OkHttpInvocationBuilder.post(OkHttpInvocationBuilder.java:116) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:31) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:13) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) ~[testcontainers-1.14.1.jar:na]
	at com.github.dockerjava.core.command.StartContainerCmdImpl.exec(StartContainerCmdImpl.java:43) ~[testcontainers-1.14.1.jar:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
	at org.testcontainers.dockerclient.AuditLoggingDockerClient.lambda$wrappedCommand$14(AuditLoggingDockerClient.java:102) ~[testcontainers-1.14.1.jar:na]
	at com.sun.proxy.$Proxy84.exec(Unknown Source) ~[na:na]
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:409) ~[testcontainers-1.14.1.jar:na]

when i in single class run test is right

Hi. It looks like some other service is taken a port 6370 - which is used by Redis container. Please verify if it is ok, kill the process on port 6370, and try re-run the tests.

only use mvn test will occur this error,is change other port to run my test will occur same error,
hen i in single class run test is right

Hi. It looks like some other service is taken a port 6370 - which is used by Redis container. Please verify if it is ok, kill the process on port 6370, and try re-run the tests.

only use mvn test will occur this error,is change other port to run my test will occur same error,
hen i in single class run test is right

can you share sample project?

can you share sample project?

https://github.com/adminSxs/testcontainer-demo

can you share sample project?

i look the log , find  recreate the same container when every class test execute .will occur the port is already allocated

Hi. It looks like some other service is taken a port 6370 - which is used by Redis container. Please verify if it is ok, kill the process on port 6370, and try re-run the tests.

when load test class,the container will create one time or more times

I run your test, and i have not faced with issue you are referencing, in fact tests are not properly cinfigured:

you should have cloud dependency added to project (https://github.com/testcontainers/testcontainers-spring-boot#make-sure-you-have-spring-boot-and-spring-cloud-in-classpath-of-your-tests-in-case-if-you-need-to-pick-version)
you should not override provided properties, but instead you need to user them (https://github.com/testcontainers/testcontainers-spring-boot#produces-6)

so if you will fix your project:

remove bootstrap.yml fully
set proper spring redis properties

Tests run will be next:

authors: adminSxs alexromanov tdanylchuk vasilievip


text:
邮件发送失败

QQ邮件设置，除了按照readme操作以外，在配置username的时候注意写的是自己的QQ号，而不是自己的邮箱的昵称。163邮箱没试过，估计也可能有这个坑。有邮箱 相关问题的同学们，可以直接在这个issues下直接回复，盖楼，一个issue就能解决多个问题了？哈哈哈哈哈

运行了Email()后，提示“server hostname cannot be an empty string or start with a leading dot.”是什么问题呢？各位大神。

修改emailConf.py 35行: smtp = smtplib.SMTP_SSL(host) 即可

163发gmail亲测有效，密码设为授权吗

from config.emailConf import sendEmail，然后显示ImportError: cannot import name 'sendEmail' from 'config.emailConf' (D:\12306-master\config\emailConf.py)，我这是啥情况？都没法测试通知了

之前能用但是一直提示邮箱配置有误，今天下午水了水CSDN，解决了。加上两个端口号就能发邮箱了。
        try:             smtp = smtplib.SMTP_SSL(host**,465,587**)             smtp.connect(host)         except socket.error:             smtp = smtplib.SMTP()             smtp.connect(host)

邮件配置有误(535, 'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb\xb5\xc7\xc2\xbc\xa1\xa3\xcf\xea\xc7\xe9\xc7\xeb\xbf\xb4: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256')
使用QQ邮箱返回上面的错误。
配置：
email_conf:
  is_email: True
  email: " QQ号@qq.com "
  notice_email_list: "QQ邮箱昵称@qq.com"
  username: "QQ号"
  password: "授权码"
  host: "smtp.qq.com"

我用的qq往163发
EMAIL_CONF = {
"IS_MAIL": True,
"email": "QQ邮箱",
"notice_email_list": "163邮箱",
"username": "QQ号",
"password": "在qq邮箱中给你的授权码",
"host": "smtp.qq.com",
}

qq往163发,亲测有效
EMAIL_CONF = {
"IS_MAIL": True,
"email": "QQ邮箱",
"notice_email_list": "163邮箱",
"username": "QQ号",//不要@qq.com
"password": "在qq邮箱中给你的授权码",
"host": "smtp.qq.com",
}

1

OSError: [WinError 87] 参数错误。
这是什么鬼啊

FileNotFoundError: [Errno 2] No such file or directory: '/Users/wenxianping/Downloads/chromedriver': '/Users/wenxianping/Downloads/chromedriver'

163邮箱依然需要授权码

嗯，确实是需要授权码。
我是使用163邮箱向qq邮箱发送短信，配置如下：
EMAIL_CONF = {
"IS_MAIL": True,
"email": "leefan@163.com",
"notice_email_list": "12345678@qq.com",
"username": "leefan",
"password": "授权码",
"host": "smtp.163.com",
}

是否可以增加单测邮箱是否配置ok的入口？

可以的，具体修改如下：
`# -- coding=utf-8 --
from config.emailConf import sendEmail
from config.serverchanConf import sendServerChan
from init import select_ticket_info
def run():
#select_ticket_info.select().main()
def Email():
sendEmail(u"订票小助手测试一下")
def PushServerChan():
sendServerChan("订票小助手测试一下")
if name == 'main':
#run()
Email()
# PushbearConf()
`

运行主程序，要是能在本地生成一个页面，通过在页面填写需要的基本信息并且控制抢票，那体验会非常的好。

163给QQ发被拒收了，试了下可以用自己QQ给自己QQ发邮件

邮件配置有误(535, 'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb\xb5\xc7\xc2\xbc\xa1\xa3\xcf\xea\xc7\xe9\xc7\xeb\xbf\xb4: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256')
使用QQ邮箱返回上面的错误。
配置：
email_conf:
is_email: True
email: " QQ号@qq.com "
notice_email_list: "QQ邮箱昵称@qq.com"
username: "QQ号"
password: "授权码"
host: "smtp.qq.com"

notice_email_list这个是收件箱，所以你后面应该直接填另外一个邮箱，而不是QQ邮箱昵称这些

邮件配置有误[Errno 110] Connection timed out
一直这个错误如何解决，网页能访问正常

163邮箱554DT:SPM报错
之前配置用163发qq或gmail都是报这个错
邮件配置有误(554, b'DT:SPM 163 smtp11,D8CowACXZ6xNZgNelp6PAg--.117S2 1577281105,please see http://mail.163.com/help/help_spam_16.htm?ip=218.17.40.86&hostid=smtp11&time=1577281105')

给的网址查到：
554 DT:SPM 发送的邮件内容包含了未被许可的信息，或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件；

不算成功的解决
尝试自己给自己发可以了
我的配置如下
EMAIL_CONF = {
    "IS_MAIL": True,
    "email": "XXX@163.com",
    "notice_email_list": "XXX@163.com",
    "username": "XXX",
    "password": "xxx",
    "host": "smtp.163.com",
}

邮件配置有误'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
这个问题怎么有人知道怎么解决吗？

邮件配置有误'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
请问这个怎么解决？是最新的代码  环境是阿里云 ubuntu 16.04 64位

邮件配置有误'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
请问这个怎么解决？是最新的代码 环境是阿里云 ubuntu 16.04 64位

（1）Python安装时的默认编码是ascii，程序中出现非ascii编码时会报该错误，建议程序入口处设置编码为utf8.
（2）在run.py文件开头处，修改如下：
-- coding=utf-8 --
import argparse
import sys
#设置编码格式
reload(sys)
sys.setdefaultencoding('utf8')

测试邮件被退回什么情况
163 邮箱发 QQ 邮箱
请问授权码怎么获得

邮件配置有误'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
请问这个怎么解决？是最新的代码 环境是阿里云 ubuntu 16.04 64位

（1）Python安装时的默认编码是ascii，程序中出现非ascii编码时会报该错误，建议程序入口处设置编码为utf8.
（2）在run.py文件开头处，修改如下：
-- coding=utf-8 --
import argparse
import sys
#设置编码格式
reload(sys)
sys.setdefaultencoding('utf8')

请问如何获取授权码，我的QQ邮箱没有收到授权码

python run.py r     运行抢票程序
python run.py c     过滤cdn
python run.py t     测试邮箱和server酱，server酱需要打开开关

邮件配置有误'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
请问这个怎么解决？是最新的代码 环境是阿里云 ubuntu 16.04 64位

（1）Python安装时的默认编码是ascii，程序中出现非ascii编码时会报该错误，建议程序入口处设置编码为utf8.
（2）在run.py文件开头处，修改如下：
-- coding=utf-8 --
import argparse
import sys
#设置编码格式
reload(sys)
sys.setdefaultencoding('utf8')

谢谢   已解决

QQ邮件设置，除了按照readme操作以外，在配置username的时候注意写的是自己的QQ号，而不是自己的邮箱的昵称。163邮箱没试过，估计也可能有这个坑。有邮箱 相关问题的同学们，可以直接在这个issues下直接回复，盖楼，一个issue就能解决多个问题了？哈哈哈哈哈

163邮箱username不用加“@163.com” password注意要用授权码不是邮箱密码

邮件配置有误'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
这个问题怎么有人知道怎么解决吗？

我也是报了同样的错误

QQ邮件设置，除了按照readme操作以外，在配置username的时候注意写的是自己的QQ号，而不是自己的邮箱的昵称。163邮箱没试过，估计也可能有这个坑。有邮箱 相关问题的同学们，可以直接在这个issues下直接回复，盖楼，一个issue就能解决多个问题了？哈哈哈哈哈

163邮箱username不用加“@163.com” password注意要用授权码不是邮箱密码

邮件配置有误'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
这个问题怎么有人知道怎么解决吗？

QQ邮件设置，除了按照readme操作以外，在配置username的时候注意写的是自己的QQ号，而不是自己的邮箱的昵称。163邮箱没试过，估计也可能有这个坑。有邮箱 相关问题的同学们，可以直接在这个issues下直接回复，盖楼，一个issue就能解决多个问题了？哈哈哈哈哈

QQ邮件设置，除了按照readme操作以外，在配置username的时候注意写的是自己的QQ号，而不是自己的邮箱的昵称。163邮箱没试过，估计也可能有这个坑。有邮箱 相关问题的同学们，可以直接在这个issues下直接回复，盖楼，一个issue就能解决多个问题了？哈哈哈哈哈

用的python3.7.6
EMAIL_CONF = {     "IS_MAIL": True,     "email": "xxx@163.com",     "notice_email_list": "123@qq.com",     "username": "xxx",     "password": "授权码",     "host": "smtp.163.com", } SERVER_CHAN_CONF = {     "is_server_chan": False,     "secret": "SCKEY" }
然后运行: python run.py t
报错：邮件配置有误'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte

邮件配置有误(602, b'Mail is denied! Source address out of accept list!')
这个报错，怎么搞？

gmail.com能使用吗？

python3 run.py t 可以测试邮件发送。
qq邮箱配置授权码可以发送到163

邮件配置有误'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
这个问题怎么有人知道怎么解决吗？

可能是由于计算机名称里带中文导致的，我用sys.exc_info方法也的确定位到了socket.py里的错误，如下链接有详细说明：https://blog.csdn.net/wwyy2018/article/details/83346812
但是用了文章里的方法并没有成功，只好改了计算机名称为全英文，最后解决了。
修改计算机名称请参考：http://www.2000xp.cn/sort064/10140.html

WINError 10061，由于目标计算机积极拒绝，无法连接，应该怎么办

authors: 1369455660 Adam-Lv AllenCon Ben-SYZ ChanaLii JvHulk Miot Orange-Yellow PrivateL XiaoZhangDeXiaoShaoBao Yatbsofm baicaisir cc55michael fenghualong fwk1010 guochaodong iewoai jenhaolee jianqiao0313 lnpjazy shaonaoteam syh010319 xueyue77 yangqi199808 zgxclzylzylzy ziyuwzf


text:
fix:验证docker环境

doc: docker环境验证
Issue: #583

为了检测运行环境是否为docker，只需要增加一个环境变量即可，不需要如此复杂的代码。伪代码如下：
if "IN_DOCKER" in os.environ:
  do_something()
else:
  do_another()

然后在使用docker启动时，把IN_DOCKER这个环境变量设置为1：

source: gharchive/pull-request


text:
Refactors JSON schema and adds SHA256 verification of tarballs

This change allows us increased confidence that tarballs downloaded were
what we expected. Notably, getenvoy use N.N.N will fail now, if the
sha256sum doesn't match what's in the json key for that filename.
This refactors out Envoy-specific terminology from the JSON schema used
to validate envoy-versions.json. It is now called
release-versions-schema.json.
This adds a new key sha256sums in the schema and backfills data for the
existing versions.
The key name "sha256sums" comes from the sha256sum command. This is
SHA-256 instead of SHA-512 as it is a ubuquitous hash algo, for example,
used by default also in goreleaser.
This doesn't use a more generic term like "hash" because doing so would
cause unnecessary confusion on what hash it is (ex MD-5?).
The map "sha256sums" allows for easy indexing, and using the filename
instead of the URL allows less changes when rehosting the exact same
files.
Signed-off-by: Adrian Cole adrian@tetrate.io

3Q for the help @mathetake!

repo: tetratelabs/getenvoy


text:
interpreter: fix NaN truncation in vector values

Signed-off-by: Takeshi Yoneda takeshi@tetrate.io

found the fix, but no idea why it fixes... will figure out next week

I think I will repurpose this to aline our moremath with the corresponding one in the reference interpreter, especially in terms of NaN value handling.

repo: tetratelabs/wazero


text:
onReject and onAccept being removed - What to use for callback?

Since you guys are removing the only callback method available for masks / pipes, what would you recommend as an alternative for handling callbacks as a replacement of these two functions?

What is your use case for using the callbacks?  The current implementation is buggy and either needs fixing or removing...
I've left a question re what to do with the data that was returned to the onReject callback.   see the PR #369
Let us know if you have any ideas...

@shuhkla With Angular, you can add onInput callback to the element. With React, you can add onChange callback. I assume other frameworks have equivalents callbacks too.
Could you describe the use case for which you think onReject and onAccept are necessary?

authors: lozjackson msafi shuhkla

repo: text-mask/text-mask

license: Unlicense


text:
[WIP] feat(textlint-tester): implement snapshot testing

POC: implement snapshot testing using snap-shot-core
It includes very hacky way for https://github.com/bahmutov/snap-shot-core/pull/51
process.chdir is bad...
fix #542

It will change rule test flow.
Current:

input actual text
input expected result manually

Snapshot:

input text
Run snapshot and generate expected result

Anothor option: user can specify file name per test case.
tester.run(rule, {
  snapshots: {
    "filename.txt": { text: "string" }
  }
});

Blocker: https://github.com/bahmutov/snap-shot-core/pull/195

I want to separate this snapshot testing as other testing library.
e.g. textlint-tester-snapshot
Because, we need to try it and get error before merging snapshot testing.

Close this.
We need to create snapshot testing library again #542
We will implement this based on secretlint
https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/tester/src/index.ts

repo: textlint/textlint


text:
Option to turn off tests in the build

It's me again :)
I saw that your tests were running with my project test, I did some investigation and I saw that this is a common practice make a flag to be able to disable the tests externally
https://github.com/libcheck/check/issues/238#issuecomment-574258335
https://cmake.org/cmake/help/latest/module/FetchContent.html#examples

Hi again :)
I have one question,
https://github.com/tezc/sc/blob/9db998bad4e7ae80b8d2d4d7e74d5bf90c4062cf/array/CMakeLists.txt#L16
Do these options apply to .so file? Or not, because it's defined after add_library line? -g option may cause your so file include debugging info. If that's an issue for you, you can change these if checks with something like :
if (NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
    target_compile_options(${PROJECT_NAME}_test PRIVATE -g -Wall -Wextra -pedantic -Werror)
endif ()

Otherwise, feel free to merge this.
Thanks a lot.

Is not a issue for me :) I have no rights to merge :(

@rafaeldelboni
I couldn't find merge access option quickly, I'll take a look :)
Anyway, I've created v1.0.0 tag again, including this PR. Let me know everything works for you.

authors: rafaeldelboni tezc

repo: tezc/sc


text:
More robust conv2d

The current convolution implementation isn't as robust as the built in tensorflow one. If we're going to be able to import any tensorflow graph we'll need to match the robustness of that implementation.
Two main issues I've come across:

tensorflow takes 2 or 4 strides for a 2d convolution. I think right now we only support 1 stride
tensorflow can support both NCHW and NHWC format whereas we only support NCHW

There are probably other edge cases and at some point we should probably test all the different edge cases.

Various features have been added in the past years. These issues should have been fixed due to the most recent support for ResNet50 inference. We can open a new issue to discuss if necessary.

repo: tf-encrypted/tf-encrypted


text:
fix overflow errors on safari

closes #28
Were two issues here:

.hamburger-links should have been row vs column
image 100% inside a div with max-height will still make the image full size (gets constrained in chrome)

@ianlivingstone can you test this

repo: tf-encrypted/website


text:
Migration to kotlinx-coroutines-test 1.6.1 API

close issue_number
Changes
Migration to kotlinx-coroutines-test 1.6.1 API

Use UnconfinedTestDispatcher from TestCoroutineDispatcher
Use runTest from testDispatcher.runBlockingTest

Note
Migration to the new kotlinx-coroutines-test API

Codecov Report

Merging #156 (903d174) into main (22d2268) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main     #156   +/-   ##
=========================================
  Coverage     29.68%   29.68%
  Complexity       37       37
=========================================
  Files            55       55
  Lines           694      694
  Branches         93       93
=========================================
  Hits            206      206
  Misses          486      486
  Partials          2        2

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 22d2268...903d174. Read the comment docs.

authors: codecov-commenter tfandkusu


text:
アプリのアイコンを作成する

ChatGPT でイラストが作れるので、それで良いと思う。

これが良さそう。

Google Play 掲載用アイコン 512x512


text:
Rebase

This combines the rebase branch with #61. See comments for details

https://github.com/tfukaza/harvest/pull/62#discussion_r667603844: Some tests are failing because removing fetch_prices had a ripple effect on destroying endpoint functionalities. These will have to be resolved before merging.

#62 (comment): Some tests are failing because removing fetch_prices had a ripple effect on destroying endpoint functionalities. These will have to be resolved before merging.

Working on the fixes right now

repo: tfukaza/harvest


text:
Doesn't handle arguments after --

So- when I'm trying to pass additional arguments to terraform call after --, those arguments aren't being propagated to any terraform call.
Example invocation:
bash -x ./bin/terraform.sh --action plan --project XXX --environment XXX --component XXX --bucket-prefix XXX --region eu-west-1 -- -var journal_sha256sum=wRFZ/rvP3I8H4what3v3r9/qSmD2b1kZRQ=

invocation of terraform plan later in the script:
terraform plan -input=false -refresh=true -module-depth=-1 -var region=eu-west-1 -var project=XXX -var bucket_name=XXX -var aws_account_id=XXX -var-file=../../etc/env_eu-west-1_XXX.tfvars

Would need more information to understand why this is happening for you. We use additional arguments for absolutely everything we do, so it certainly works in general.
You're executing with -x -- so where in the trace output are the args being dropped. During getopt?
Also, what OS is this being run on? Macs throw all kinds of troubles by not using GNU toolset by default.

I'm having this issue also.
Currently using 1.7.0. The command I am using is
tplan () {
    ./bin/terraform.sh -a 'plan' -c $1 -e $2 -p 'foo' -r 'eu-west-1' -b 'bar'
}

I have gnu-getopt installed via homebrew. The result of getopt_out=$(getopt -T) when running in my terminal is --.
I believe this is causing issues as I get the error message
ERROR: Non GNU getopt detected. If you're using a Mac then try "brew install gnu-getopt"

I have only started having this issue since using an M1 Macbook Pro. Do you have any advice please?

@adamyaziji is the brew-installed version of getopt in your path?
which getopt should return something like /usr/local/opt/gnu-getopt/bin/getopt rather than /usr/bin/getopt - it seems like although you have installed it, you have not ensured that it is used instead of the system getopt?

authors: Zordrak adamyaziji edmundcraske-bjss szymonrychu

repo: tfutils/tfscaffold


text:
Is it safe to run multiple containers in docker on knex migration?

I use knex migrate to do migration before my application starts when my database structure changed. I use docker to deploy my application, which will run many containers in the same time. I wonder if it is safe to run knex migrate in each container concurrently.
As expected, only one container should hold the lock and do the migration, and all others should return 'already up to date'. If not so, the database structure might be corrupted.

yes, there is locking that only one instance may run migrations at once... others should get already up to date response.

authors: chenweiyj elhigu

repo: tgriesser/knex


text:
BatchInsert remake proposal. Fixes #1391

Two things were requested for batchInsert:

[x] Returning columns from inserted rows
[x] Supply an outside transaction instead of auto-creating

I've added these two things to the current implementation.
I also decided to rewrite the whole procedure and move it out to a seperate file. I feel that it's very likely this function will eventually be ripped out of the knex repository into a seperate module at some point. Like a utility library of sorts. (We've talked about this before)
Not entirely satisfied with how complex-looking this simple thing became, and may have missed something. Please have a look  @rhys-vdw @elhigu !

Implementation looks correct to me, I don't see any errors in logic / error handling there. I'm not big fan of this feature in its current form, since it relays on input data being in big array. It is not scalable. With this change memory implications will be even bigger that with earlier implementation since now in worst case input and results are stored in huge arrays filling the RAM.
However this might be useful for someone who are not working with too big datasets so it doesn't matter much to me.
For relieving the memory pressure would be nice if implementation would take callback to fetch more data to insert / or could work with javascript iterables in a way that everything doesn't have to be in memory at once.

Looks CI problems are because of jshint is giving some errors
src/util/make-knex.js: line 9, col 5, 'Promise' is defined but never used.
src/util/make-knex.js: line 10, col 17, 'isNumber' is defined but never used.
src/util/make-knex.js: line 10, col 27, 'chunk' is defined but never used.
3 errors

Not sure what's going on with those CI's..

@wubuzz It was complaining about jshint... try running locally
npm run jshint

@elhigu I fixed the JSHint issues, but look at the log from the CI's now. Failing apt-get install's
https://travis-ci.org/tgriesser/knex/jobs/129053667

authors: elhigu wubzz


text:
Set up Sinopia & Node 6 in CI

[ ] Set up Sinopia
[ ] Install Node 6 and latest NPM
[ ] Update the VM image after calling add user

For PR 811 to ever pass we have to have Sinopia set up. Please look here for instructions on how to do it. The key thing is that once you have run add user you have to take a snapshot of the VM and set up that snapshot to run in the future so we will be able to talk to the Sinopia instance.
As we discussed Sinopia should be run outside of the VM so we can persist information across VM re-runs.
Also we need to add Node 6 and NPM to the VM image so we can do our custom builds of PouchDB and Express-PouchDB.

We are getting an error that NPM isn't found so we need to find out why the path doesn't have npm since we have installed it on the VM.

We are getting an error that NPM isn't found so we need to find out why the path doesn't have npm since we have installed it on the VM.

repo: thaliproject/CI

license: mit


text:
After installation app shows only "System Disabled"

Hi,
I just installed the pre-release version v1.0.1 build 9, after having earlier installed the stable release from the Play store.
Apps look very good, regarding the settings, etc, and I read a lot of positive reviews.
However on the main screen, I see only, beside some widgets, like the gear wheel, a closed lock with the text System Disabled.
The question is how to proceed? How to arm the system?
The topic home/alarm shows only set =DISARM
Also pressing the configured "Panic" button does not show any response on MQTT Explorer.
Do we have to send a MQTT command first? The intention is to use it with Node Red in the future.
[Edit]
After having send a "Disarm" command the app went alive.
I tested a number of things, but a few things are not functioning.

Configuring the panic button, does not publish a MQTT message.
According to the README file it should publish to home/alarm/panic, but this is not the case.
Speak and alert commands give the expected reaction, but notification dos not give any reaction on the app.
For some reason the app went into "Disabled" again.
Does it require a kind of watch dog?

Regards

Have you gone through the documentation?   I have instructions on how to set this up using Home Assistant and its built-in MQTT broker.  You need to have a MQTT broker to communicate with the alarm and your home automation platform.
The application should be run using either the built-in screensaver or something like Daydream.  If your device sleeps or locks the screen the connectivity to the server will be lost as most devices disable wifi.
I will investigate the panic feature, this is a beta version of the application, so issues are expected until its been fully tested.

2. Speak and alert commands give the expected reaction, but notification dos not give any reaction on the app.

You will have to explain this one a bit better.   What does not happen?  You receive no TTS in the application?

Hi,
You asked:

Have you gone through the documentation? I have instructions on how to set this up using Home Assistant and its built-in MQTT broker. You need to have a MQTT broker to communicate with the alarm and your home automation platform.

I have read the documentation more than once.
In the introduction it has been stated, that the Alarm Control Panel should work with any home automation platform that supports MQTT messaging such as OpenHab, Node-Red, and SmartThings.
In my case I intend to use it together with Node Red and the Mosquitto broker.
The first step I took was to install this application on the smart phone and configure it to communicate with my MQTT server.
After installation it is possible to do the configuration, but you still have the main screen with the text "System Disabled".
Perhaps it is different for HA users, as their built in broker may start the communication.
Only after I send from Node Red the command with the topic "home/alarm" with the payload "disarmed" the app changed the screen and further operation is possible. Later on I did not succeed to put the app again in "System Disabled" condition.
However it went once in "System Disabled" condition but why and how I do not know.
Perhaps it is not a bug/problem, but in that case I suggest to include it in the README.
As I know it is still beta, I monitor every action and response with MQTT Explorer.

The application should be run using either the built-in screensaver or something like Daydream. If your device sleeps or locks the screen the connectivity to the server will be lost as most devices disable wifi.

I use the configuration setting  under "Settings" "Prevent Screen Sleep" Is this the correct translation, as I use the Dutch language.
So this is not an issue, I think.

I will investigate the panic feature, this is a beta version of the application, so issues are expected until its been fully tested.

I know it is beta and that it requires testing. This is exactly what I do and report it.
If you press the button, no activity in MQTT Explorer.
You can send a number of commands to the app.
One of them is an "Alert" send to alarmpanel/command
This results in a pop-up window, displaying the command. It works but a Window that attracts more attention would be preferred.
The window should have the size of the current status windows , e.g System disarmed.
However if you send a "Notification", you don't see anything in the app.
You see it only in the "Data Logs". I think a "Notification" is important as well, less important than a "Alert" , but more important than only for the "Data Logs"
In addition I found one other issue.
If the alarm panel (app) is in one of the "Armed Conditions" and you send data to the topic "home/alarm", different than "disarmed", the app returns to System Disarmed. I currently solved it in my application by preventing that other texts as "armed_home", "armed_away", "armed_night" or "disarmed" will be sent, but I believe it would also useful to prevent it that a random number returns (I used 4) the screen to "System Disarmed".
I have not been able to test all. I appreciate your work and this app (even if it is still beta) works quite well.
Iḿ happy to support you by testing, so if you want me to test specific things let me know.
Regards

Too much information to unpack it all.   The system disabled is probably due to the application receiving an unexpected payload for the topic for alarm mode.   Make sure those are correctly being sent from the application.   Initially, when subscribing to a topic, the alarm gets the state from the server because the state is "retained" with the retain flag true when publishing topics.
Notification command is to display a device notification, the kind that shows up when you have new email for example.  If nothing is displayed, its probably because the app does not have permissions?
The Alert is meant to be something immediate, for the user present at the alarm.  For example, they tried to arm the alarm, but server sent alert message saying "door is open".  It uses a standard Android dialog alert for this at this time.
I have fixed the panic button and there is now a new update.

Hi,

Too much information to unpack it all.

I do not understand this remark.

The system disabled is probably due to the application receiving an unexpected payload for the topic for alarm mode. Make sure those are correctly being sent from the application. Initially, when subscribing to a topic, the alarm gets the state from the server because the state is "retained" with the retain flag true when publishing topics.

At that moment there was no application, communicating with the MQTT server.

Notification command is to display a device notification, the kind that shows up when you have new email for example. If nothing is displayed, its probably because the app does not have permissions?

What do you mean with "not have permissions"? As far as I know, the MQTT Alarm panel app has al permissions needed to work.

I have fixed the panic button and there is now a new update.

Tested it and the message is published under alarmpanel/panic. I did correct that in the PR for the README.
One other issue.
If you select to send the "Remote Code΅, so your pin code will be sent by MQTT and the code is incorrect, the code will not be sent. That is fine, but it means that the README has to be corrected and publishing a payload of "INVALID"  is not necessary.
Sending "VALID" has always bee redundant, as in this case you will reply with the status information.
Regards

If you select to send the "Remote Code΅, so your pin code will be sent by MQTT and the code is incorrect, the code will not be sent. That is fine, but it means that the README has to be corrected and publishing a payload of "INVALID" is not necessary.
Sending "VALID" has always bee redundant, as in this case you will reply with the status information.

I have removed this section as it is still under development.  For now, if user enters invalid code, send MQTT alert command message.  In later versions we will add a new "event" topic which will notify the application of the pending alarm states (going from disarm to arming home) and invalid codes or if alarm cannot be set due to open sensor.

What do you mean with "not have permissions"? As far as I know, the MQTT Alarm panel app has al permissions needed to work.

The device permission in the Android settings for displaying application notifications.  This is a system notification, it shows up in the device system tray.

I don't think I understand enough of the issue to help with the other parts of your ticket.   The alarm panel is the UI for the server-side MQTT broker.    If for example you send a command DISARM, the server should respond with the proper payload to update the application state "disarmed".
For each command sent from the application, a corresponding event must be published from the server to update the alarm state.  You will have to look at the MQTT Manual component commands and topics payloads for the round trip communication needed for the alarm to function with your MQTT broker.
https://www.home-assistant.io/integrations/manual_mqtt/
Please feel free to join the Discord channel where there are others who may be able to provide feedback for setting up Alarm panel with Node-Red.

Hi,

For now, if user enters invalid code, send MQTT alert command message.

No, for this version, v1.0.2b0, you don't see anything published. You will see in your app "Code invalid, try again".

The device permission in the Android settings for displaying application notifications. This is a system notification, it shows up in the device system tray.

Ok, correct, I got it.

I don't think I understand enough of the issue to help with the other parts of your ticket. The alarm panel is the UI for the server-side MQTT broker. If for example you send a command DISARM, the server should respond with the proper payload to update the application state "disarmed".

I understand and it does. What I mean, is that, if you send a command DISARM, together with the PIN code and the PIN code is correct, that the broker will respond with "disarmed" and never with "VALID", as a response to a valid received pin code.
Currently it does not receive an incorrect pin code.

For each command sent from the application, a corresponding event must be published from the server to update the alarm state. You will have to look at the MQTT Manual component commands and topics payloads for the round trip communication needed for the alarm to function with your MQTT broker.

I did and it corresponds with the README. It is working fine.

Please feel free to join the Discord channel where there are others who may be able to provide feedback for setting up Alarm panel with Node-Red.

I joined already a few days ago, when I discovered this application.
Keep up the good work, it is running fine, also without HA.

repo: thanksmister/android-mqtt-alarm-panel


text:
Panel goes to background after few hours

Describe the bug
Panel goes to background after few hours. The icon in notification area shows that it's running, it's just not a foreground app. On foreground is whatever was there before WallPanel, so usually launcher.
To Reproduce
Steps to reproduce the behavior:

Run WallPanel
Wait a few hours (leave overnight is the simplest approach)
Wake the screen (I use wake on motion using front camera)
See panel not visible

Expected behavior
Panel still as a foreground app.
Smartphone (please complete the following information):

Device: TB Touch Ignis 8
OS: Android 4.2.2
Browser: stock browser

Additional context
I've tested few different applications on the same device and WallPanel was the only one that goes to background. Others app were foreground until I manually switched them, so there is something strange with this particular app.
I've tested different pages (even google.com) to make sure it's not a particular page causing this strange behavior.
I've also tested WallPanel on my phone (Samsung S5 with Android 5.0) and it was fine (left as foreground overnight), so in my case it's only this app on one device which makes it harder to debug and fix.
I understand you are not supporting such old Android (per my last issue when you created legacy fork) but maybe you could help with this one more time? This issue is quite frustrating as I have to bring back WallPanel few times a day to see displayed data.

The same is happening on Amazon Fire 7.

@vitalykorolev Amazon devices have no screen saver ability such as standard Android Daydream, so you would have to run the application with the option to prevent the screen to sleep or use another application to act as a screensaver.   By default the application does not keep the screen awake because this would burn the screen, so it relies on the screen saver to be in shallow sleep, but without that ability, Amazon devices go into deep sleep and kill applications.

@Marooned-MB Are you running the legacy version of the application, because you are reporting the issue on the current version.

@thanksmister I think I misunderstood the original report. I don't use the screensaver and I just keep the screen on all the time. I think in my case the issue is related to SSL handling.

Have you updated recently?  I added some logic to handle SSL.  I’m going to add a screen saver at some point to the app for Amazon tablets.

Are you running the legacy version of the application, because you are reporting the issue on the current version.

I'm running regular version, just stopped updating at the last working version v0.8.4 build 1

I have no crashes reported for the latest version of the application.

It's not crashing. It just goes into background as if I hit the home button or switch to the last running app.

@Marooned-MB it still might be crashing, but since that version is so old, I can't tell if I fixed it or not since then.   There is no way to address this issue because you are not on a version that I can test to duplicate the issue.   Plus, if I did fix the issue, you would still have to update to get the fix.  I am not able to work on the legacy version or do bug fixes without a lot of effort.   So... not sure how I can help other than recommend you run the legacy version by side-loading it.

But as I understand, legacy version is exactly as this version v0.8.4 build 1? It's more or less a frozen tag, so they do not differ?
Am I able to install a particular toolchain to compile recent code every time you do some fixes and produce .apk that will run on my machine? So containing working Crosswalk? Thanks to that I won't bother you with support you can't provide plus I can tell if the recent code has this particular issue.

The difference is that I can test the legacy version, verify the issue on my older tablet and if its something simple, I may be able to address it.  I can't fix an older version of the v0.8.4 build 1 and update it, I have only the possibility of updating legacy version.    You can install Android Studio (new version) and install legacy version.  It will work as long as you do not update the target SDK version in the gradle file.    Crosswalk is another library entirely, its no longer being worked on.  The only thing that happened is newer versions of the Google SDK or toolchain no longer work with Crosswalk because its so outdated.

Ok, got it. So I'll install legacy in a minute and leave it overnight to check if the issue exists. If so, I'll open the issue on legacy repo. Thanks for clarifications and your great work!
I'll also go with the Android studio as a side approach.

After almost 24h I can confirm that legacy version (v0.8.4 build 7) does not have this issue so it was either fixed between build 1 and 7 or different toolchain help solving this problem. Either way, I'm closing this issue.

I too have this or a similar issue. On my device (Lenovo 7 inch tablet with Android 5.0.1) it seems the WallPanel just will not stay active for more than a day or so, when I wake my device up the first thing I see is WallPanel settings page, so the app has somehow reverted back to the settings page and then the screen goes to sleep after a while.
I have looked at all settings I can find in the device, screensaver, sleep modes etc, and I have everything disabled as far as I can see.
WallPanel is set to always keep the screen active.

In case this helps someone else, the problem I described above seems to be solved by turning off automatic updates in google play (fingers crossed, but for now the app has been working for longer than ever before). Seems that every time that update process is run on the device wallpanel will for some reason go to the background or something similar.

Sadly my Amazon tablet doesn't have the Google Play store, but I'll try disabling updates for the Amazon Store (if possible) and report back if anything changes.

I seem to be having this issue on v0.8.5-beta.6 with a Kindle Fire 7 (7th generation, 2017) on Fire OS 5.3.6.4.

Same here. I switched over to Fully Kiosk and its pretty decent. But I really like the mjpeg camera streaming of wall panel so I thought I would give it another go. I just installed the legacy version and have the browser selection set to automatic. Figured I'd give that a go, if it doesn't work then I'll try the crosswalk selection.

After testing for several weeks I have concluded that the camera on the Amazon Fire devices is the cause of the application going into the background.
This means that their is a limitation when using the application on those devices when using motion, face, QR or MJPEG streaming for long periods of time.
There is no fix or work around. FireOS is a custom build of Android and the tablets and I believe there is something that closes applications that use large resources at certain times.  This issue is already closed because it can not be addressed.

Yeah I figured it was the camera that was causing my issues.
Just out of curiosity, and I understand if it’s a no, but is there a way to implement using the camera to get around the fireos limitations?
I believe Fully Kiosk uses a snapshot method.
End state for me would be a method that would allow linking with something like motioneye.

On Mar 9, 2019, at 6:25 AM, Michael Ritchie notifications@github.com wrote:
After testing for several weeks I have concluded that the camera on the Amazon Fire devices is the cause of the application going into the background.
This means that their is a limitation when using the application on those devices when using motion, face, QR or MJPEG streaming for long periods of time.
There is no fix or work around. FireOS is a custom build of Android and the tablets and I believe there is something that closes applications that use large resources at certain times. This issue is already closed because it can not be addressed.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

That makes sense @thanksmister, thanks for at least confirming the cause :+1:

Yeah, there is a possibility to use only a snapshot feature, but that takes some time to implement.  You are welcome to add a feature request.

authors: Madseason41 Marooned-MB jackwilsdon olalid thanksmister vitalykorolev

repo: thanksmister/wallpanel-android


text:
Implement target metadata API

As metric metadata API was merged https://github.com/thanos-io/thanos/pull/3686, it would be good to also support the Prometheus target metadata API (https://prometheus.io/docs/prometheus/latest/querying/api/#querying-target-metadata).
As the API response format is very similar to the previous metric metadata API, it would be not so difficult to support it. We can reuse the existing proto file as well.

@yeya24 I'd love to take up this issue

Feel free to take it!

@crsandeep I will take a go at this unless you are still working on it in the background?

Apologies, I couldn't get to this.
@PhilipGough please feel free to pick this up

Chatted with @PhilipGough about this ticket earlier, we were a little confused so just wanted to be more explicit about what we expect the output of a call to Query's /api/v1/targets/metadata would be.
Say we had a Querier configured to communicate with two sidecars StoreAPIs with two Prometheus instances. Calling /api/v1/targets/metadata on each Prometheus returns the following:
{
  "status": "success",
  "data": [
    {
      "target": {
        "instance": "localhost:9090",
        "job": "myself"
      },
      "metric": "prometheus_tsdb_out_of_bound_samples_total",
      "type": "counter",
      "help": "Total number of out of bound samples ingestion failed attempts.",
      "unit": ""
    }
  ]
}

We assume that the expected output of calling Query's /api/v1/targets/metadata would be the same as the above (i.e. one entry per (Target, Metric) tuple, rather than one entry per (Store, Target, Metric) tuple).
This behaviour would be consistent with the handling of metadata in the TestMetadataAPI_Fanout integration test.
Is that in-line with what you were thinking @yeya24 ?

I was looking into using the /api/v1/targets/metadata endpoint on Thanos Query, and I would have expected the output to be one entry per (Target, Metric) tuple, the same as on Prometheus.

Any news around that ? @PhilipGough @ianbillett I saw your closed PRs... :/ Maybe we should reopen they ?

@gillg - hey, yes they went stale - I think https://github.com/thanos-io/thanos/pull/4449 can be re-opened and reviewed and I am happy to get back to it if the maintainers find the time.

authors: PhilipGough crsandeep gillg ianbillett majorpeti007 yeya24

repo: thanos-io/thanos


text:
Create a remote-write Appender for a stateless Ruler

Still WIP :)
I need to pass down the configuration and reuse a proper HTTP client. But overall it works and I can already remote-write into receivers.

[ ] I added CHANGELOG entry for this change.
[ ] Change is not relevant to the end user.

Changes

Verification

What do people think would be the minimum required to merge this so that the student working on this get move forward with this? @kakkoyun @squat @bwplotka

Hey @metalmatze, sorry for the late response. We haven't had enough time to check this out. I'll do my best to have a look at it this week.

Sure, let me know if you have any questions or what to pair on it.

Code we could reuse: https://sourcegraph.com/github.com/grafana/agent@226268aa96a69210fca3dc66036dc4524b4ae1b1/-/blob/pkg/prom/wal/wal.go#L122:6

Also, we could start with just remote write on top of TSDB, that would be one solution for a start. But we can try directly with no local TSDB approach too.

I would start with no persistence for a start. The problematic thing about persistence in the rule evaluation scenario is that you don't know how much data a rule evaluation is going to produce, so by definition the "scalability" of a local storage (even just a WAL) would not be sufficient. I think the better strategy for resiliency is to record when the last evaluation was and "back-fill". After all, even if a ruler is up, but the storage is down, then the data the ruler is going to query is likely stale or non existant anyways.

Fair point, cc @idoqo
The main problem with this approach is that every rule/alert eval produces a remote write request with a single sample. This is not the best idea overall within our hashing/forwarding approach. We can quickly saturate connections/CPU in larger setups.

Without diving into the rule engine in Prometheus I think commit is only called per rule-evaluation, not per sample, right? If so, then the remote-write request would be per rule-evaluation as well. I think that would also be sufficient for a start, after all, this is how Prometheus is going to be issuing remote-write requests soon as well (commit-based).

Hello! remote-write from a ruler would be a great thing, let's reopen this PR and continue?

authors: brancz bwplotka kakkoyun m-messiah metalmatze


text:
fix set form input width

fix set form input width previous behavior was getting value from child node "option" although in documentation  it should be a parent node like
{     "width" : 6 }

I think I'd rather just update the docs to match. Any option @emptynick?

The docs already mention that you have to put width into display:
https://docs.laravelvoyager.com/bread/introduction#display-options
Or did I get something wrong?

The docs already mention that you have to put width into display:
https://docs.laravelvoyager.com/bread/introduction#display-options
Or did I get something wrong?

please review this
https://docs.laravelvoyager.com/bread/introduction-1#width

I just moved all formfield specific things from the BREAD-introduction to the formfields-introduction (with the correct JSON).
Closing.

authors: emptynick fletch3555 mrkindy

repo: the-control-group/voyager


text:
Handle deployment settings in a new collection in the database

We have a number of settings on the frontend and backend that are currently set using environement variables. It would be nice for admins to be able to set many of these settings from the app itself.
To do this, we will need a new database collection called "settings" (or similar), that holds a document with settings for the overall deployment, as well as documents for individual block types. Many of the settings in resources.js could be stored here, as well as things like API keys for llm models, configuration for login types, etc. These settings could be changeable by admins from the new admin panel that is in development.

This general approach will be followed by #667 at some point too

authors: jdbocarsly ml-evs

repo: the-grey-group/datalab


text:
bump github/branch-deploy to v10 and update branch-deploy settings

This pull request updates branch-deploy to the latest version. It also removes the skip_reviews and skip_ci settings as this is an open source project, making those options somewhat unsafe.

.deploy

.deploy

repo: the-hideout/tarkov-dev


text:
Add cheapest price column to tables

Instead of using multiple columns to show the flea price, trader cash price, and barter cost, this switches many of the tables to use the "Cheapest Price" column, which displays the cheapest of all those prices and displays a tooltip to show the source of the price. This allows users to get a meaningful price sort with a single column.
Before:

After:

Also enhanced some tables, such as provisions, to help show the best value items:

.deploy to development

.deploy


text:
explore generating SVG entities for each onion piece

to make visual comparison between piece areas easier, like this D3 demo by Jason Davies which sorts countries by decreasing area

approach in https://github.com/the-pudding/onion/commit/fad0f7ac337ce3da00b470112eb42b70d5c4a77c uses masks, but these pieces won't animate cleanly for #17. so probably best to use a library like clipper-js (see comment in commit)

repo: the-pudding/onion


text:
Team Section

Description
Created Team section.
Relevant GitHub Issues that will be fixed are: #141
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to
not work as expected)
[ ] This change requires a documentation update
[ ] Chore (anything else)

How Has This Been Tested?

[x] Responsiveness on various devices
Desktop Browser

[ ] Apple Safari
[ ] Brave
[x] Google Chrome
[ ] Microsoft Edge
[ ]Mozilla FireFox

Mobile Browser

[x] Google Chrome
[ ] Mozilla FireFox
[ ] Microsoft Edge
[ ] Apple Safari

Other Tests:

Checklist

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation

PR Closure

Use Squash And Merge to Close Pull Request
Delete any branch after merging

Note: there are added Footer files, just ignore them for the purposes of this PR. It does not break any code or cause any problems, just a basic setup that made it through on the push to remote branch by accident.


text:
Tiles overlapping instead of snaping on besides them

The tiles are overlapping eachother when you hold in left click and draging while they should snap on to the side of the tiles.

The latest drag action now has some sort of "proper" tiling implemented. If you do not feel like it works the way it should do then please feel free to reopen this report!

repo: theMagnon/DTile


text:
Using Language names instead of language keys in languange switcher

Hi!
A little suggestion. Now Ananke uses {{ .Lang }} as language link in layouts/partials/i18nlist.html, which makes language switcher links like that:
en pt-BR he ru
I suggest using .Site.Language.LanguageName instead, so the user can customize the language names in his config file. For example, it could be full names (English, Português, Русский), or even flag emojis (🇬🇧 🇧🇷 🇷🇺).
Sorry, I'm new to Hugo and Ananke, here is my suggested code for layouts/partials/i18nlist.html:
before
{{ .Lang }}
after
{{ .Site.Language.LanguageName | default .Lang }}

I agree; this should be a configuration option. For the time being, you can override the theme file by adding a copy to your own repository under layouts/partials/i18nlist.html and adding your changes there.

authors: davidsneighbour mayuxi

repo: theNewDynamic/gohugo-theme-ananke