commit
6c06424183
@ -37,6 +37,7 @@ import static org.mockito.Mockito.mock;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.InetAddress;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
@ -51,8 +52,6 @@ import org.testng.annotations.Test;
|
|||||||
import com.google.refine.ProjectManager;
|
import com.google.refine.ProjectManager;
|
||||||
import com.google.refine.ProjectMetadata;
|
import com.google.refine.ProjectMetadata;
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.browsing.RowVisitor;
|
|
||||||
import com.google.refine.grel.Function;
|
|
||||||
import com.google.refine.io.FileProjectManager;
|
import com.google.refine.io.FileProjectManager;
|
||||||
import com.google.refine.expr.ExpressionUtils;
|
import com.google.refine.expr.ExpressionUtils;
|
||||||
import com.google.refine.model.Cell;
|
import com.google.refine.model.Cell;
|
||||||
@ -117,49 +116,66 @@ public class UrlFetchingTests extends RefineTest {
|
|||||||
engine = null;
|
engine = null;
|
||||||
bindings = null;
|
bindings = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isHostReachable(String host, int timeout){
|
||||||
|
boolean state = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
state = InetAddress.getByName(host).isReachable(timeout);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test for caching
|
* Test for caching
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUrlCaching() throws Exception {
|
public void testUrlCaching() throws Exception {
|
||||||
|
if (!isHostReachable("www.random.org", 5000))
|
||||||
|
return;
|
||||||
|
|
||||||
for (int i = 0; i < 100; i++) {
|
for (int i = 0; i < 100; i++) {
|
||||||
Row row = new Row(2);
|
Row row = new Row(2);
|
||||||
row.setCell(0, new Cell(i < 5 ? "apple":"orange", null));
|
row.setCell(0, new Cell(i < 5 ? "apple":"orange", null));
|
||||||
project.rows.add(row);
|
project.rows.add(row);
|
||||||
}
|
}
|
||||||
EngineDependentOperation op = new ColumnAdditionByFetchingURLsOperation(engine_config,
|
EngineDependentOperation op = new ColumnAdditionByFetchingURLsOperation(engine_config,
|
||||||
"fruits",
|
"fruits",
|
||||||
"\"https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new&city=\"+value",
|
"\"https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new&city=\"+value",
|
||||||
OnError.SetToBlank,
|
OnError.StoreError,
|
||||||
"rand",
|
"rand",
|
||||||
1,
|
1,
|
||||||
500,
|
500,
|
||||||
true);
|
true);
|
||||||
ProcessManager pm = project.getProcessManager();
|
ProcessManager pm = project.getProcessManager();
|
||||||
Process process = op.createProcess(project, options);
|
Process process = op.createProcess(project, options);
|
||||||
process.startPerforming(pm);
|
process.startPerforming(pm);
|
||||||
Assert.assertTrue(process.isRunning());
|
Assert.assertTrue(process.isRunning());
|
||||||
try {
|
try {
|
||||||
// We have 100 rows and 500 ms per row but only two distinct
|
// We have 100 rows and 500 ms per row but only two distinct
|
||||||
// values so we should not wait more than ~2000 ms to get the
|
// values so we should not wait more than ~2000 ms to get the
|
||||||
// results. Just to make sure the test passes with plenty of
|
// results. Just to make sure the test passes with plenty of
|
||||||
// net latency we sleep for longer (but still less than
|
// net latency we sleep for longer (but still less than
|
||||||
// 50,000ms).
|
// 50,000ms).
|
||||||
Thread.sleep(5000);
|
Thread.sleep(5000);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Assert.fail("Test interrupted");
|
Assert.fail("Test interrupted");
|
||||||
}
|
}
|
||||||
Assert.assertFalse(process.isRunning());
|
|
||||||
|
|
||||||
// Inspect rows
|
|
||||||
String ref_val = (String)project.rows.get(0).getCellValue(1);
|
// Inspect rows
|
||||||
Assert.assertTrue(ref_val != "apple"); // just to make sure I picked the right column
|
String ref_val = (String)project.rows.get(0).getCellValue(1).toString();
|
||||||
for (int i = 1; i < 4; i++) {
|
Assert.assertTrue(ref_val != "apple"); // just to make sure I picked the right column
|
||||||
// all random values should be equal due to caching
|
for (int i = 1; i < 4; i++) {
|
||||||
Assert.assertEquals(project.rows.get(i).getCellValue(1), ref_val);
|
System.out.println("value:" + project.rows.get(i).getCellValue(1));
|
||||||
}
|
// all random values should be equal due to caching
|
||||||
|
Assert.assertEquals(project.rows.get(i).getCellValue(1), ref_val);
|
||||||
|
}
|
||||||
|
Assert.assertFalse(process.isRunning());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -177,30 +193,30 @@ public class UrlFetchingTests extends RefineTest {
|
|||||||
Row row2 = new Row(2);
|
Row row2 = new Row(2);
|
||||||
row2.setCell(0, new Cell("http://anursiebcuiesldcresturce.detur/anusclbc", null)); // well-formed but invalid
|
row2.setCell(0, new Cell("http://anursiebcuiesldcresturce.detur/anusclbc", null)); // well-formed but invalid
|
||||||
project.rows.add(row2);
|
project.rows.add(row2);
|
||||||
EngineDependentOperation op = new ColumnAdditionByFetchingURLsOperation(engine_config,
|
EngineDependentOperation op = new ColumnAdditionByFetchingURLsOperation(engine_config,
|
||||||
"fruits",
|
"fruits",
|
||||||
"value",
|
"value",
|
||||||
OnError.StoreError,
|
OnError.StoreError,
|
||||||
"junk",
|
"junk",
|
||||||
1,
|
1,
|
||||||
50,
|
50,
|
||||||
true);
|
true);
|
||||||
ProcessManager pm = project.getProcessManager();
|
ProcessManager pm = project.getProcessManager();
|
||||||
Process process = op.createProcess(project, options);
|
Process process = op.createProcess(project, options);
|
||||||
process.startPerforming(pm);
|
process.startPerforming(pm);
|
||||||
Assert.assertTrue(process.isRunning());
|
Assert.assertTrue(process.isRunning());
|
||||||
try {
|
try {
|
||||||
Thread.sleep(5000);
|
Thread.sleep(5000);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Assert.fail("Test interrupted");
|
Assert.fail("Test interrupted");
|
||||||
}
|
}
|
||||||
Assert.assertFalse(process.isRunning());
|
Assert.assertFalse(process.isRunning());
|
||||||
|
|
||||||
int newCol = project.columnModel.getColumnByName("junk").getCellIndex();
|
int newCol = project.columnModel.getColumnByName("junk").getCellIndex();
|
||||||
// Inspect rows
|
// Inspect rows
|
||||||
Assert.assertEquals(project.rows.get(0).getCellValue(newCol), null);
|
Assert.assertEquals(project.rows.get(0).getCellValue(newCol), null);
|
||||||
Assert.assertTrue(project.rows.get(1).getCellValue(newCol) != null);
|
Assert.assertTrue(project.rows.get(1).getCellValue(newCol) != null);
|
||||||
Assert.assertTrue(ExpressionUtils.isError(project.rows.get(2).getCellValue(newCol)));
|
Assert.assertTrue(ExpressionUtils.isError(project.rows.get(2).getCellValue(newCol)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user