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(FileServer.j > ava:534) > [java] at > org.apache.jmeter.services.FileServer.getResolvedFile(FileServer.java:5 > 31) > [java] at > org.apache.jmeter.functions.FileRowColContainer.load(FileRowColContaine > r.java:78) > [java] at > org.apache.jmeter.functions.FileRowColContainer.<init>(FileRowColContai > ner.java:73) > [java] at > org.apache.jmeter.functions.TestFileRowColContainer.testColumns(TestFil > eRowColContainer.java:91) > [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > [java] at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja > va:62) > [java] at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso > rImpl.java:43) > [java] at java.lang.reflect.Method.invoke(Method.java:498) > [java] at > org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMe > thod.java:50) > [java] at > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCalla > ble.java:12) > [java] at > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMeth > od.java:47) > [java] at > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMetho > d.java:17) > [java] at > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.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(BlockJUnit4ClassRunne > r.java:78) > [java] at > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunne > 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(ThreadPoolExecutor.ja > va:1149) > [java] at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.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. Each test must be allowed to complete (and tidy up if necessary) before the next one starts. > 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/FileRowColCo > > > ntainer.java > > > > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowColCon > > > tainer.java > > > jmeter/trunk/xdocs/changes.xml > > > > > > Modified: > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowColCo > > > 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/FileRowColCo > > > ntainer.java > > > (original) > > > +++ > > > jmeter/trunk/src/functions/org/apache/jmeter/functions/FileRowColCo > > > 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().getResolvedFile( > > > fileName).toPath(), > > > > > > Charset.defaultCharset())) { > > > String line = myBread.readLine(); > > > /* > > > > > > Modified: > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowColCon > > > 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/TestFileRowColCon > > > tainer.java > > > (original) > > > +++ > > > jmeter/trunk/test/src/org/apache/jmeter/functions/TestFileRowColCon > > > 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> > > > > > > > > > > > > > >