/** Tests http:send-request((),()). */ @Test public void sendReqNoParams() { final Command cmd = new XQuery(_HTTP_SEND_REQUEST.args("()")); try { cmd.execute(ctx); } catch (final BaseXException ex) { assertTrue(ex.getMessage().contains(ErrType.HC.toString())); } }
/** * Runs the stress test. * * @param clients number of clients * @param runs number of runs per client * @throws Exception exception */ private static void run(final int clients, final int runs) throws Exception { // Create test database Command cmd = new CreateDB(NAME, INPUT); cmd.execute(context); // Start clients final Client[] cl = new Client[clients]; for (int i = 0; i < clients; ++i) cl[i] = new Client(runs); for (final Client c : cl) c.start(); for (final Client c : cl) c.join(); // Drop database cmd = new DropDB(NAME); cmd.execute(context); }
@Override public void databases(final LockResult lr) { for (final Command c : cmds) c.databases(lr); // lock globally if context-dependent is found (context will be changed by commands) final boolean wc = lr.write.contains(DBLocking.CTX) || lr.write.contains(DBLocking.COLL); final boolean rc = lr.read.contains(DBLocking.CTX) || lr.read.contains(DBLocking.COLL); if (wc || rc && !lr.write.isEmpty()) { lr.writeAll = true; lr.readAll = true; } else if (rc) { lr.readAll = true; } }
/** Saves the displayed text. */ private void save() { final BaseXFileChooser fc = new BaseXFileChooser(SAVE_AS, gui.gopts.get(GUIOptions.WORKPATH), gui).suffix(IO.XMLSUFFIX); final IO file = fc.select(Mode.FSAVE); if (file == null) return; gui.gopts.set(GUIOptions.WORKPATH, file.path()); gui.cursor(CURSORWAIT, true); final MainOptions opts = gui.context.options; final int mh = opts.get(MainOptions.MAXHITS); opts.set(MainOptions.MAXHITS, -1); opts.set(MainOptions.CACHEQUERY, false); try (final PrintOutput out = new PrintOutput(file.toString())) { if (cmd != null) { cmd.execute(gui.context, out); } else if (ns != null) { ns.serialize(Serializer.get(out)); } else { final byte[] txt = text.getText(); for (final byte t : txt) if (t < 0 || t > ' ' || ws(t)) out.write(t); } } catch (final IOException ex) { BaseXDialog.error(gui, Util.info(FILE_NOT_SAVED_X, file)); } finally { opts.set(MainOptions.MAXHITS, mh); opts.set(MainOptions.CACHEQUERY, true); gui.cursor(CURSORARROW, true); } }
/** * Caches the output. * * @param out cached output * @param c command * @param r result * @throws QueryException query exception */ public void cacheText(final ArrayOutput out, final Command c, final Result r) throws QueryException { // cache command or node set cmd = null; ns = null; final int mh = gui.context.options.get(MainOptions.MAXHITS); boolean parse = false; if (mh >= 0 && r != null && r.size() >= mh) { parse = true; } else if (out.finished()) { if (r instanceof DBNodes) ns = (DBNodes) r; else parse = true; } // create new command instance if (parse) cmd = new CommandParser(c.toString(), gui.context).parseSingle(); }
@Override public void createIndex(final IndexType type, final MainOptions options, final Command cmd) throws IOException { // close existing index close(type); final IndexBuilder ib; switch (type) { case TEXT: ib = new DiskValuesBuilder(this, options, true); break; case ATTRIBUTE: ib = new DiskValuesBuilder(this, options, false); break; case FULLTEXT: ib = new FTBuilder(this, options); break; default: throw Util.notExpected(); } if (cmd != null) cmd.proc(ib); set(type, ib.build()); }
@Override protected void execute(final Command cmd, final OutputStream os) throws IOException { execute(cmd.toString(), os); }
@Override public boolean updating(final Context ctx) { boolean up = false; for (final Command c : cmds) up |= c.updating(ctx); return up; }
/** * Runs the specified command. * * @param c command * @param os output stream * @throws HTTPException HTTP exception */ final void run(final Command c, final OutputStream os) throws HTTPException { final boolean ok = c.run(context, os); error(c.info()); if (!ok) throw HTTPCode.BAD_REQUEST_X.get(c.info()); }