Hello, What about making all test that are related to components used only serially not run in parallel.
Either there’s a sync issue which I don’t think is the case here (file base is only changed when loading a new file and it doesn’t happen in parallel), or it’s a test issue (which IMO is the case) ,does running this test in parallel makes sense ? Regards On Friday, December 28, 2018, sebb <seb...@gmail.com> wrote: > On Fri, 28 Dec 2018 at 12:59, Felix Schumacher > <felix.schumac...@internetallee.de> wrote: > > > > Am Freitag, den 28.12.2018, 11:32 +0000 schrieb sebb: > > > On Fri, 28 Dec 2018 at 10:35, Felix Schumacher > > > <felix.schumac...@internetallee.de> wrote: > > > > > > > > Am Freitag, den 28.12.2018, 08:24 +0100 schrieb Philippe Mouawad: > > > > > Hello, > > > > > It seems this commit introduces random failures on nightly build: > > > > > > > > > > > > > > > > > > > > https://ci.apache.org/builders/jmeter-nightly/builds/1264/steps/shell_5/ > logs/stdio > > > > > > > > The test fails at > > > > > > > > 1) testColumns(org.apache.jmeter.functions.TestFileRowColContainer) > > > > [java] java.lang.NullPointerException > > > > [java] at > > > > org.apache.jmeter.services.FileServer$FileEntry.access$200(FileServ > > > > er.j > > > > ava:534) > > > > [java] at > > > > org.apache.jmeter.services.FileServer.getResolvedFile(FileServer.ja > > > > va:5 > > > > 31) > > > > [java] at > > > > org.apache.jmeter.functions.FileRowColContainer.load(FileRowColCont > > > > aine > > > > r.java:78) > > > > [java] at > > > > org.apache.jmeter.functions.FileRowColContainer.<init>(FileRowColCo > > > > ntai > > > > ner.java:73) > > > > [java] at > > > > org.apache.jmeter.functions.TestFileRowColContainer.testColumns(Tes > > > > tFil > > > > eRowColContainer.java:91) > > > > [java] at > > > > sun.reflect.NativeMethodAccessorImpl.invoke0(Native > > > > Method) > > > > [java] at > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImp > > > > l.ja > > > > va:62) > > > > [java] at > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcc > > > > esso > > > > rImpl.java:43) > > > > [java] at java.lang.reflect.Method.invoke(Method.java:498) > > > > [java] at > > > > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(Framewo > > > > rkMe > > > > thod.java:50) > > > > [java] at > > > > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveC > > > > alla > > > > ble.java:12) > > > > [java] at > > > > org.junit.runners.model.FrameworkMethod.invokeExplosively(Framework > > > > Meth > > > > od.java:47) > > > > [java] at > > > > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeM > > > > etho > > > > d.java:17) > > > > [java] at > > > > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefore > > > > s.ja > > > > va:26) > > > > [java] at > > > > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters. > > > > java > > > > :27) > > > > [java] at > > > > org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) > > > > [java] at > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassR > > > > unne > > > > r.java:78) > > > > [java] at > > > > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassR > > > > unne > > > > r.java:57) > > > > [java] at > > > > org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) > > > > [java] at > > > > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java: > > > > 511) > > > > [java] at > > > > java.util.concurrent.FutureTask.run(FutureTask.java:266) > > > > [java] at > > > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecuto > > > > r.ja > > > > va:1149) > > > > [java] at > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecut > > > > or.j > > > > ava:624) > > > > [java] at java.lang.Thread.run(Thread.java:748) > > > > > > > > Especially the concurrent access makes me believe, that this is a > > > > problem with the test case and not the implementation. > > > > > > > > Originally this test had no script base set. I added a script base > > > > before each test and reset it to the one found before after the > > > > test. > > > > > > > > Now, when those tests are run in parallel, it can happen, that the > > > > first test sets a script base and remembers the original one. The > > > > next > > > > one starts before the first is finished and remembers the "set" > > > > base. > > > > When this test finishes it will "reset" the script base to the > > > > "set" > > > > base, which would be wrong. > > > > > > > > There are at least two options to get around this: > > > > > > > > a) revert to state before the fix > > > > b) only set the script base and don't reset it after the tests > > > > > > > > I don't want to take option a), but option b) will change the > > > > environment for all tests that run after these tests. > > > > > > > > What is your opionion on this (options plus explanation :) > > > > > > AIUI there is only one script base for the whole of JMeter - is that > > > correct? > > > If so, then it does not make sense to allow tests to run in parallel. > > > > Thats my understanding as well, that all tests basically share one > > script base. > > > > > > > > Each test must be allowed to complete (and tidy up if necessary) > > > before the next one starts. > > > > That is what I tried, but I think it fails in the described manner. > > In which case there is likely some other bug that needs investigation. > Either in the test case or the main JMeter code. > > > I could try option b) hoping, that the assumption - that we only use > > one script base - holds. > > Whether or not there is only one script base should be clear by > inspection of the code. > > > Felix > > > > > > > > > Regards, > > > > Felix > > > > > > > > > > > > > > Regards > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Dec 24, 2018 at 2:13 PM <fschumac...@apache.org> wrote: > > > > > > > > > > > Author: fschumacher > > > > > > Date: Mon Dec 24 13:13:31 2018 > > > > > > New Revision: 1849687 > > > > > > > > > > > > URL: http://svn.apache.org/viewvc?rev=1849687&view=rev > > > > > > Log: > > > > > > When using CSVRead search the script base path for files, too. > > > > > > > > > > > > Bugzilla Id: 63037 > > > > > > > > > > > > Modified: > > > > > > > > > > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowC > > > > > > olCo > > > > > > ntainer.java > > > > > > > > > > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowCo > > > > > > lCon > > > > > > tainer.java > > > > > > jmeter/trunk/xdocs/changes.xml > > > > > > > > > > > > Modified: > > > > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowC > > > > > > olCo > > > > > > ntainer.java > > > > > > URL: > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/jmeter/trunk/src/functions/ > org/apache/jmeter/functions/FileRowColContainer.java?rev= > 1849687&r1=1849686&r2=1849687&view=diff > > > > > > > > > > > > =============================================================== > > > > > > ==== > > > > > > =========== > > > > > > --- > > > > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowC > > > > > > olCo > > > > > > ntainer.java > > > > > > (original) > > > > > > +++ > > > > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowC > > > > > > olCo > > > > > > ntainer.java > > > > > > Mon Dec 24 13:13:31 2018 > > > > > > @@ -19,7 +19,6 @@ > > > > > > package org.apache.jmeter.functions; > > > > > > > > > > > > import java.io.BufferedReader; > > > > > > -import java.io.File; > > > > > > import java.io.FileNotFoundException; > > > > > > import java.io.IOException; > > > > > > import java.nio.charset.Charset; > > > > > > @@ -28,6 +27,7 @@ import java.util.ArrayList; > > > > > > import java.util.List; > > > > > > import java.util.StringTokenizer; > > > > > > > > > > > > +import org.apache.jmeter.services.FileServer; > > > > > > import org.apache.jmeter.util.JMeterUtils; > > > > > > import org.slf4j.Logger; > > > > > > import org.slf4j.LoggerFactory; > > > > > > @@ -75,7 +75,7 @@ public class FileRowColContainer { > > > > > > > > > > > > private void load() throws IOException, > > > > > > FileNotFoundException > > > > > > { > > > > > > try (BufferedReader myBread = > > > > > > - Files.newBufferedReader(new > > > > > > File(fileName).toPath(), > > > > > > + > > > > > > Files.newBufferedReader(FileServer.getFileServer().getResolvedF > > > > > > ile( > > > > > > fileName).toPath(), > > > > > > > > > > > > Charset.defaultCharset())) { > > > > > > String line = myBread.readLine(); > > > > > > /* > > > > > > > > > > > > Modified: > > > > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowCo > > > > > > lCon > > > > > > tainer.java > > > > > > URL: > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/ > apache/jmeter/functions/TestFileRowColContainer.java? > rev=1849687&r1=1849686&r2=1849687&view=diff > > > > > > > > > > > > =============================================================== > > > > > > ==== > > > > > > =========== > > > > > > --- > > > > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowCo > > > > > > lCon > > > > > > tainer.java > > > > > > (original) > > > > > > +++ > > > > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowCo > > > > > > lCon > > > > > > tainer.java > > > > > > Mon Dec 24 13:13:31 2018 > > > > > > @@ -23,9 +23,14 @@ import static org.junit.Assert.assertNot > > > > > > import static org.junit.Assert.assertTrue; > > > > > > import static org.junit.Assert.fail; > > > > > > > > > > > > +import java.io.File; > > > > > > import java.nio.file.NoSuchFileException; > > > > > > > > > > > > import org.apache.jmeter.junit.JMeterTestCase; > > > > > > +import org.apache.jmeter.services.FileServer; > > > > > > +import org.apache.jmeter.util.JMeterUtils; > > > > > > +import org.junit.After; > > > > > > +import org.junit.Before; > > > > > > import org.junit.Test; > > > > > > > > > > > > /** > > > > > > @@ -35,7 +40,20 @@ import org.junit.Test; > > > > > > */ > > > > > > public class TestFileRowColContainer extends JMeterTestCase { > > > > > > > > > > > > - @Test(expected=NoSuchFileException.class) > > > > > > + private String defaultBase = null; > > > > > > + > > > > > > + @Before > > > > > > + public void setUp() { > > > > > > + defaultBase = FileServer.getDefaultBase(); > > > > > > + FileServer.getFileServer().setBase(new > > > > > > File(JMeterUtils.getJMeterHome() + "/bin")); > > > > > > + } > > > > > > + > > > > > > + @After > > > > > > + public void tearDown() { > > > > > > + FileServer.getFileServer().setBase(new > > > > > > File(defaultBase)); > > > > > > + } > > > > > > + > > > > > > + @Test(expected = NoSuchFileException.class) > > > > > > public void testNull() throws Exception { > > > > > > new > > > > > > FileRowColContainer(findTestPath("testfiles/xyzxyz")); > > > > > > } > > > > > > @@ -46,6 +64,20 @@ public class TestFileRowColContainer ext > > > > > > assertNotNull(f); > > > > > > assertEquals("Expected 4 lines", 4, f.getSize()); > > > > > > > > > > > > + assertEquals(0, f.nextRow()); > > > > > > + assertEquals(1, f.nextRow()); > > > > > > + assertEquals(2, f.nextRow()); > > > > > > + assertEquals(3, f.nextRow()); > > > > > > + assertEquals(0, f.nextRow()); > > > > > > + > > > > > > + } > > > > > > + > > > > > > + @Test > > > > > > + public void testRowNumRelative() throws Exception { > > > > > > + FileRowColContainer f = new > > > > > > FileRowColContainer("testfiles/unit/TestFileRowColContainer.csv > > > > > > "); > > > > > > + assertNotNull(f); > > > > > > + assertEquals("Expected 4 lines", 4, f.getSize()); > > > > > > + > > > > > > assertEquals(0, f.nextRow()); > > > > > > assertEquals(1, f.nextRow()); > > > > > > assertEquals(2, f.nextRow()); > > > > > > > > > > > > Modified: jmeter/trunk/xdocs/changes.xml > > > > > > URL: > > > > > > > > > > > > > > > > http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes. > xml?rev=1849687&r1=1849686&r2=1849687&view=diff > > > > > > > > > > > > =============================================================== > > > > > > ==== > > > > > > =========== > > > > > > --- jmeter/trunk/xdocs/changes.xml [utf-8] (original) > > > > > > +++ jmeter/trunk/xdocs/changes.xml [utf-8] Mon Dec 24 13:13:31 > > > > > > 2018 > > > > > > @@ -105,6 +105,7 @@ of previous time slot as a base. Startin > > > > > > > > > > > > <h3>Functions</h3> > > > > > > <ul> > > > > > > + <li><bug>63037</bug>When using <code>CSVRead</code> search > > > > > > the > > > > > > script > > > > > > base path for files, too.</li> > > > > > > </ul> > > > > > > > > > > > > <h3>I18N</h3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- Cordialement. Philippe Mouawad.