package com.vip.saturn.job.utils;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.util.FileSystemUtils;
import com.vip.saturn.job.utils.ScriptPidUtils;
public class ScriptPidUtilsTest {
private static final String executorName = "executor_test_01";
private static final String jobName = "jobName_test_01";
private String executorFilePath = ScriptPidUtils.EXECUTINGPATH + ScriptPidUtils.FILESEPARATOR + executorName;
private String jobFilePath = executorFilePath + ScriptPidUtils.FILESEPARATOR + jobName;
@Before
public void setup() {
ScriptPidUtils.writePidToFile(executorName, jobName, 1, 101);
ScriptPidUtils.writePidToFile(executorName, jobName, 2, 102);
}
@After
public void tearDown() {
ScriptPidUtils.removeAllPidFile(executorName, jobName, 1);
ScriptPidUtils.removeAllPidFile(executorName, jobName, 2);
File file = new File(executorFilePath);
FileSystemUtils.deleteRecursively(file);
}
@Test
public void assertGetSaturnExecutingHome() {
File file = ScriptPidUtils.getSaturnExecutingHome();
assertThat(file).exists();
assertThat(file).canRead();
assertThat(file).canWrite();
assertThat(file).isDirectory();
}
@Test
public void assertWritePidToFile() {
ScriptPidUtils.writePidToFile(executorName, jobName, 3, 103);
long pid = ScriptPidUtils.getFirstPidFromFile(executorName, jobName, ""+3);
assertThat(pid).isEqualTo(103);
}
@Test
public void assertgetPidFromFile() {
long pid = ScriptPidUtils.getFirstPidFromFile(executorName, jobName, ""+1);
assertThat(pid).isEqualTo(101);
}
@Test
public void assertgetPidFromFile2() {
String[] files = ScriptPidUtils.getItemsPaths(executorName, jobName);
assertThat(files.length).isEqualTo(2);
Arrays.asList(files).contains(jobFilePath + ScriptPidUtils.FILESEPARATOR + "1");
Arrays.asList(files).contains(jobFilePath + ScriptPidUtils.FILESEPARATOR + "2");
}
@Test
public void assertremovePidFile() {
long pid = ScriptPidUtils.getFirstPidFromFile(executorName, jobName, ""+1);
assertThat(pid).isEqualTo(101);
ScriptPidUtils.removeAllPidFile(executorName, jobName, 1);
long pid2 = ScriptPidUtils.getFirstPidFromFile(executorName, jobName, ""+1);
assertThat(pid2).isEqualTo(-1);
}
@Test
public void testFilterEnvInCmdStr() {
Map<String, String> env= new HashMap<>();
env.put("fool", "duff");
env.put("ass", "david");
env.put("LS_COLORS", "r=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01");
String cmd = "In front of me is ${fool}, beside me is $ass. $fool likes ${ass}. this is ${nobody} i don't know.";
String expected = "In front of me is duff, beside me is david. duff likes david. this is ${nobody} i don't know.";
String result = ScriptPidUtils.filterEnvInCmdStr(env, cmd);
assertThat(result).isEqualTo(expected);
}
}