Hi Ralph

Sorry, I was distracted by other things.

> Ideally, parallel tests should use their own LoggerContext. But for the
> ClassLoaderContextSelector (the default) this would require that each
> test have its own ClassLoader. In reality it would be better to create a
> ContextSelect for the framework you are using that keys off of
> something unique for each test to have its own ContextSelector.
>
> I know nothing about a Spock testing framework so I can’t really
> advise you there.

I'm pretty familiar with Spock and also its internals.
Can you elaborate a bit more?
You could use generic terms as you see fit, or use something else you
are familiar with to describe it.

Wouldn't having an own logger context for each test iteration be a
performance problem, opposed to something like a parallel-safe log
appender?

It should be no problem to get a unique identifier per test iteration.
Actually as Spock 2.x is a JUnit 5 platform test engine each iteration
has a unique node id already anyway, have to check whether I can
access it or just generate something new.
But what do I do with that identifier then to make it work properly?

Regards
Björn

Am Do., 14. Apr. 2022 um 20:56 Uhr schrieb Ralph Goers
<ralph.go...@dslextreme.com>:
>
> Ideally, parallel tests should use their own LoggerContext. But for the
> ClassLoaderContextSelector (the default) this would require that each
> test have its own ClassLoader. In reality it would be better to create a
> ContextSelect for the framework you are using that keys off of
> something unique for each test to have its own ContextSelector.
>
> I know nothing about a Spock testing framework so I can’t really
> advise you there.
>
> Ralph
>
> > On Apr 13, 2022, at 5:46 PM, Björn Kautler <bjo...@kautler.net> wrote:
> >
> > Hi
> >
> > I'm currently using ListAppender from log4j2-core-test, to test that
> > the logging of the project does what it should do.
> > For that I configured a ListAppender in the log4j2 config file that is
> > used for the tests.
> > In a custom global Spock extension (the test framework I use), I
> > retrieve the appender
> > using ListAppender.getListAppender and call clear() on it before an
> > iteration starts,
> > so I only get the logs written during that test and it also does not
> > overflow the RAM.
> >
> > Now my problem is, that I'd like to enable parallel execution of the
> > tests which is new in Spock 2.x.
> > But the ListAppender naturally does not like that, as it is the same
> > for the whole JVM.
> >
> > I looked into the LoggerContextRule whether I find something useful there,
> > but - please correct me if I'm wrong - as far as I have seen it also
> > is not capable of parallel execution
> > as it uses system properties and static state, so parallel tests would
> > also overwrite each other I guess.
> >
> > Is there something that could be used that better supports parallel 
> > execution?
> > Would maybe a ThreadLocalListAppender help that has thread local
> > fields for events, messages, and data?
> > Or something else that is available?
> >
> > Regards
> > Björn
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > For additional commands, e-mail: log4j-user-h...@logging.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to