/*******************************************************************************
* oltpbenchmark.com
*
* Project Info: http://oltpbenchmark.com
* Project Members: Carlo Curino <carlo.curino@gmail.com>
* Evan Jones <ej@evanjones.ca>
* DIFALLAH Djellel Eddine <djelleleddine.difallah@unifr.ch>
* Andy Pavlo <pavlo@cs.brown.edu>
* CUDRE-MAUROUX Philippe <philippe.cudre-mauroux@unifr.ch>
* Yang Zhang <yaaang@gmail.com>
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation;
* either version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
******************************************************************************/
package edu.brown.benchmark.wikipedia;
import org.voltdb.VoltProcedure;
import edu.brown.benchmark.AbstractProjectBuilder;
import edu.brown.api.BenchmarkComponent;
import edu.brown.benchmark.wikipedia.procedures.GetTableCounts;
import edu.brown.benchmark.wikipedia.procedures.AddWatchList;
import edu.brown.benchmark.wikipedia.procedures.GetPageAnonymous;
import edu.brown.benchmark.wikipedia.procedures.GetPageAuthenticated;
import edu.brown.benchmark.wikipedia.procedures.RemoveWatchList;
import edu.brown.benchmark.wikipedia.procedures.UpdatePage;
import edu.brown.benchmark.wikipedia.procedures.UpdateRevisionCounters;
public class WikipediaProjectBuilder extends AbstractProjectBuilder {
// REQUIRED: Retrieved via reflection by BenchmarkController
public static final Class<? extends BenchmarkComponent> m_clientClass = WikipediaClient.class;
// REQUIRED: Retrieved via reflection by BenchmarkController
public static final Class<? extends BenchmarkComponent> m_loaderClass = WikipediaLoader.class;
@SuppressWarnings("unchecked")
public static final Class<? extends VoltProcedure> PROCEDURES[] = (Class<? extends VoltProcedure>[])new Class<?>[] {
GetTableCounts.class,
UpdateRevisionCounters.class,
AddWatchList.class,
GetPageAnonymous.class,
GetPageAuthenticated.class,
RemoveWatchList.class,
UpdatePage.class,
};
public static final String PARTITIONING[][] = new String[][] {
{ WikipediaConstants.TABLENAME_LOGGING, "log_page" },
{ WikipediaConstants.TABLENAME_PAGE, "page_id" },
{ WikipediaConstants.TABLENAME_PAGE_RESTRICTIONS, "pr_page" },
{ WikipediaConstants.TABLENAME_RECENTCHANGES, "rc_page" },
{ WikipediaConstants.TABLENAME_REVISION, "rev_page" },
{ WikipediaConstants.TABLENAME_TEXT, "old_page" },
{ WikipediaConstants.TABLENAME_WATCHLIST, "wl_page" },
{ WikipediaConstants.TABLENAME_USER, "user_id" },
{ WikipediaConstants.TABLENAME_USER_GROUPS, "ug_user" }
};
public WikipediaProjectBuilder() {
super("wikipedia", WikipediaProjectBuilder.class, PROCEDURES, PARTITIONING);
// addStmtProcedure("testPage", "select * from page");
// addStmtProcedure("testUser", "select * from USERACCT");
// addStmtProcedure("testWatchlist", "select * from WATCHLIST");
// addStmtProcedure("testRevision", "select * from REVISION");
// addStmtProcedure("testText", "select * from TEXT");
// addStmtProcedure("testJoin1", "SELECT * " +
// " FROM " + WikipediaConstants.TABLENAME_PAGE + ", " +
// WikipediaConstants.TABLENAME_REVISION +
// " WHERE page_id = rev_page " +
// " AND rev_id = page_latest LIMIT 1"
// );
// addStmtProcedure("testJoin2", "SELECT * " +
// " FROM " + WikipediaConstants.TABLENAME_PAGE + ", " +
// WikipediaConstants.TABLENAME_REVISION +
// " WHERE rev_id = page_latest LIMIT 1"
// );
}
}