package org.basex.local.single;
import org.basex.*;
import org.basex.core.cmd.*;
import org.junit.Test;
/**
* Performs bulk updates with standalone version.
*
* @author BaseX Team 2005-17, BSD License
* @author Lukas Kircher
*/
public final class XQUFStressTest extends SandboxTest {
/** Number of node updates. */
private static final int NRNODES = 100;
/**
* Tests the insert statement.
*/
@Test
public void insert10() {
insert(10);
}
/**
* Tests the insert statement.
*/
@Test
public void insert100() {
insert(100);
}
/**
* Tests the insert statement.
*/
@Test
public void insert1000() {
insert(1000);
}
/**
* Tests the insert statement.
* @param runs number of runs
*/
private void insert(final int runs) {
for(int r = 0; r < runs; r++) {
execute(new CreateDB(NAME, "<doc/>"));
// insert query
query(
"for $i in 1 to " + NRNODES + " return insert node " +
"<section><page/></section> into /doc");
// actual query
query(
"for $page in //page " +
"let $par := $page/.. " +
"return (delete node $page, insert node $page before $par)");
execute(new DropDB(NAME));
}
}
/**
* Tests the delete statement.
*/
@Test
public void delete10() {
delete(10);
}
/**
* Tests the delete statement.
*/
@Test
public void delete100() {
delete(100);
}
/**
* Tests the delete statement.
*/
@Test
public void delete1000() {
delete(1000);
}
/**
* Tests the delete statement.
* @param runs number of runs
*/
private void delete(final int runs) {
execute(new CreateDB(NAME, "<doc/>"));
for(int r = 0; r < runs; r++) {
query("for $i in 1 to " + NRNODES + " return insert node <node/> into /doc");
query("delete nodes //node");
}
execute(new DropDB(NAME));
}
}