You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2019/05/13 19:54:17 UTC
svn commit: r1859198 -
/jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java
Author: fschumacher
Date: Mon May 13 19:54:17 2019
New Revision: 1859198
URL: http://svn.apache.org/viewvc?rev=1859198&view=rev
Log:
Try to make tests run on the windows jenkins slave again (even when workspace is not cleaned up)
Modified:
jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java
Modified: jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java?rev=1859198&r1=1859197&r2=1859198&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java (original)
+++ jmeter/trunk/test/src/org/apache/jmeter/functions/TestStringtoFile.java Mon May 13 19:54:17 2019
@@ -18,28 +18,27 @@
package org.apache.jmeter.functions;
import java.io.File;
-import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Arrays;
import java.util.Collection;
-import java.util.LinkedList;
+import java.util.stream.Collectors;
import org.apache.commons.io.FileUtils;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.junit.JMeterTestCase;
import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.services.FileServer;
import org.apache.jmeter.threads.JMeterContext;
import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jmeter.threads.JMeterVariables;
import org.apache.jmeter.util.JMeterUtils;
-import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Tests for {@link StringToFile}
@@ -47,12 +46,10 @@ import org.slf4j.LoggerFactory;
public class TestStringtoFile extends JMeterTestCase {
protected AbstractFunction function;
private SampleResult result;
- private Collection<CompoundVariable> params;
- private static final Logger log = LoggerFactory.getLogger(TestSimpleFunctions.class);
- private static final String DIR_NAME = "dirTest";
private static final String FILENAME = "test.txt";
private static final String STRING_TO_WRITE = "test";
private static final String ENCODING = StandardCharsets.UTF_8.toString();
+
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@@ -64,18 +61,6 @@ public class TestStringtoFile extends JM
JMeterVariables vars = new JMeterVariables();
jmctx.setVariables(vars);
jmctx.setPreviousResult(result);
- params = new LinkedList<>();
- }
-
- @Before
- @After
- public void deleteFileBeforeAfterTest() {
- File file = new File(FILENAME);
- try {
- Files.deleteIfExists(file.toPath());
- } catch (IOException e) {
- Assert.fail("File " + FILENAME + "should not exist");
- }
}
@Test
@@ -85,48 +70,33 @@ public class TestStringtoFile extends JM
@Test
public void testWriteToFile() throws Exception {
- params.add(new CompoundVariable(FILENAME));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
- String returnValue = function.execute(result, null);
- Assert.assertTrue("This method 'Stringtofile' should have successfully run",
- Boolean.parseBoolean(returnValue));
+ try {
+ function.setParameters(functionParams(FILENAME, STRING_TO_WRITE, "true", ENCODING));
+ String returnValue = function.execute(result, null);
+ Assert.assertTrue("This method 'Stringtofile' should have successfully run",
+ Boolean.parseBoolean(returnValue));
+ } finally {
+ Files.deleteIfExists(new File(FileServer.resolveBaseRelativeName(FILENAME)).toPath());
+ }
}
@Test
public void testWriteToFileWhenDirectoryDoesntExist() throws Exception {
- String pathDirectory = File.separator + DIR_NAME;
- File dir = new File(pathDirectory);
- if (dir.exists()) {
- deleteDir(dir);
- }
- String pathname = pathDirectory + File.separator + FILENAME;
- params.add(new CompoundVariable(pathname));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
+ File dir = tempFolder.newFolder();
+ Files.delete(dir.toPath());
+ String pathname = Paths.get(dir.getAbsolutePath(), FILENAME).toString();
+ function.setParameters(functionParams(pathname, STRING_TO_WRITE, "true", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertFalse("This method 'Stringtofile' should fail to run since directory does not exist",
Boolean.parseBoolean(returnValue));
}
@Test
- public void testWriteToFileWhenDirectoryExist() throws InvalidVariableException {
- File dir = null;
- try {
- dir = tempFolder.newFolder(DIR_NAME);
- } catch (IOException e1) {
- Assert.fail("can't create the directory");
- }
- String pathname = dir.getAbsolutePath() + File.separator + FILENAME;
- params.add(new CompoundVariable(pathname));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
+ public void testWriteToFileWhenDirectoryExist() throws Exception {
+ File dir = tempFolder.newFolder();
+ dir.deleteOnExit();
+ String pathname = Paths.get(dir.getAbsolutePath(), FILENAME).toString();
+ function.setParameters(functionParams(pathname, STRING_TO_WRITE, "true", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertTrue("This method 'Stringtofile' should have successfully run if parent directory already exists",
Boolean.parseBoolean(returnValue));
@@ -134,39 +104,33 @@ public class TestStringtoFile extends JM
@Test
public void testWriteToFileOptParamWayToWriteIsNull() throws Exception {
- params.add(new CompoundVariable(FILENAME));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- function.setParameters(params);
- String returnValue = function.execute(result, null);
- Assert.assertTrue("This method 'Stringtofile' should have successfully run with empty append",
- Boolean.parseBoolean(returnValue));
+ try {
+ function.setParameters(functionParams(FILENAME, STRING_TO_WRITE));
+ String returnValue = function.execute(result, null);
+ Assert.assertTrue("This method 'Stringtofile' should have successfully run with empty append",
+ Boolean.parseBoolean(returnValue));
+ } finally {
+ Files.deleteIfExists(new File(FileServer.resolveBaseRelativeName(FILENAME)).toPath());
+ }
}
@Test
public void testWriteToFileOptParamEncodingIsNull() throws Exception {
- params.add(new CompoundVariable(FILENAME));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- function.setParameters(params);
- String returnValue = function.execute(result, null);
- Assert.assertTrue("This method 'Stringtofile' should have successfully run with no charset",
- Boolean.parseBoolean(returnValue));
-
+ try {
+ function.setParameters(functionParams(FILENAME, STRING_TO_WRITE, "true"));
+ String returnValue = function.execute(result, null);
+ Assert.assertTrue("This method 'Stringtofile' should have successfully run with no charset",
+ Boolean.parseBoolean(returnValue));
+ } finally {
+ Files.deleteIfExists(new File(FileServer.resolveBaseRelativeName(FILENAME)).toPath());
+ }
}
@Test
public void testWriteToFileEncodingNotSupported() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable("UTF-20"));
- function.setParameters(params);
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ function.setParameters(functionParams(file.getAbsolutePath(), STRING_TO_WRITE, "true", "UTF-20"));
String returnValue = function.execute(result, null);
Assert.assertFalse("This method 'Stringtofile' should have failed to run with wrong charset",
Boolean.parseBoolean(returnValue));
@@ -174,17 +138,9 @@ public class TestStringtoFile extends JM
@Test
public void testWriteToFileEncodingNotLegal() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable("UTFéé"));
- function.setParameters(params);
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ function.setParameters(functionParams(file.getAbsolutePath(), STRING_TO_WRITE, "true", "UTFéé"));
String returnValue = function.execute(result, null);
Assert.assertFalse("This method 'Stringtofile' should have failed to run with illegal chars in charset",
Boolean.parseBoolean(returnValue));
@@ -192,18 +148,10 @@ public class TestStringtoFile extends JM
@Test
public void testWriteToFileIOException() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- file.setWritable(false);
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable("UTF-8"));
- function.setParameters(params);
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ Assert.assertTrue(file.getAbsolutePath() + " should be set read-only", file.setWritable(false));
+ function.setParameters(functionParams(file.getAbsolutePath(), STRING_TO_WRITE, "true", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertFalse("This method 'Stringtofile' should have failed to run with non writable folder",
Boolean.parseBoolean(returnValue));
@@ -211,28 +159,16 @@ public class TestStringtoFile extends JM
@Test
public void testWriteToFileRequiredFilePathIsNull() throws Exception {
- params.add(new CompoundVariable(null));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
+ function.setParameters(functionParams(null, STRING_TO_WRITE, "true", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertFalse("This method 'Stringtofile' should fail to run with null file", Boolean.parseBoolean(returnValue));
}
@Test
public void testWriteToFileRequiredStringIsNull() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(""));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ function.setParameters(functionParams(file.getAbsolutePath(), "", "true", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertTrue("This method 'Stringtofile' should succeed with empty String to write",
Boolean.parseBoolean(returnValue));
@@ -240,17 +176,9 @@ public class TestStringtoFile extends JM
@Test
public void testOverwrite() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("false"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ function.setParameters(functionParams(file.getAbsolutePath(), STRING_TO_WRITE, "false", ENCODING));
String returnValue = function.execute(result, null);
Assert.assertTrue("This method 'Stringtofile' should have successfully run",
Boolean.parseBoolean(returnValue));
@@ -260,25 +188,23 @@ public class TestStringtoFile extends JM
@Test
public void testAppend() throws Exception {
- File file = null;
- try {
- file = tempFolder.newFile(FILENAME);
- } catch (IOException e1) {
- Assert.fail("Can't create the file successfully");
- }
- params.add(new CompoundVariable(file.getAbsolutePath()));
- params.add(new CompoundVariable(STRING_TO_WRITE));
- params.add(new CompoundVariable("true"));
- params.add(new CompoundVariable(ENCODING));
- function.setParameters(params);
- String returnValue = function.execute(result, null);
- returnValue = function.execute(result, null);
- Assert.assertTrue("This method 'Stringtofile' should have successfully run",
- Boolean.parseBoolean(returnValue));
+ File file = tempFolder.newFile();
+ file.deleteOnExit();
+ function.setParameters(functionParams(file.getAbsolutePath(), STRING_TO_WRITE, "true", ENCODING));
+ Assert.assertTrue("First call to 'Stringtofile' should succeed",
+ Boolean.parseBoolean(function.execute(result, null)));
+ Assert.assertTrue("Second call to 'Stringtofile' should succeed",
+ Boolean.parseBoolean(function.execute(result, null)));
String res = FileUtils.readFileToString(file, ENCODING).trim();
Assert.assertEquals("The string should be 'testtest'", "testtest", res);
}
+ private Collection<CompoundVariable> functionParams(String... args) {
+ return Arrays.asList(args).stream()
+ .map(CompoundVariable::new)
+ .collect(Collectors.toList());
+ }
+
@Test
public void testDescription() {
Assert.assertEquals("Function 'stringtofile' should have successfully reading the configuration file 'messages.properties'",
@@ -286,21 +212,4 @@ public class TestStringtoFile extends JM
function.getArgumentDesc().get(0));
}
- private static boolean deleteDir(File dir) {
- if (dir.isDirectory()) {
- String[] children = dir.list();
- for (int i = 0; i < children.length; i++) {
- boolean success = deleteDir(new File(dir, children[i]));
- if (!success) {
- return false;
- }
- }
- }
- try {
- Files.deleteIfExists(dir.toPath());
- return true;
- } catch (IOException e) {
- return false;
- }
- }
}