/**
* Copyright (C) 2009-2013 FoundationDB, LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.foundationdb.sql.pg;
import com.foundationdb.qp.row.Row;
import com.foundationdb.server.types.value.ValueSources;
import com.foundationdb.sql.TestBase;
import com.google.common.io.ByteStreams;
import org.junit.Ignore;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
/**
* A base class for integration tests that use data from files to specify the
* input and output expected from calls to the Postgres server.
*/
@Ignore
public class PostgresServerFilesITBase extends PostgresServerITBase
{
public void loadDatabase(File dir) throws Exception {
this.rootTableId = super.loadDatabase(SCHEMA_NAME, dir);
}
protected int rootTableId;
protected String dumpData() throws Exception {
final StringBuilder str = new StringBuilder();
for(Row row : scanAll(getTable(rootTableId).getGroup())) {
str.append(row.rowType().table().getName().getTableName());
for (int i = 0; i < row.rowType().nFields(); i++) {
str.append(",");
str.append(ValueSources.toObject(row.value(i)));
}
str.append("\n");
}
return str.toString();
}
protected String caseName, sql, expected, error;
protected String[] params;
/** Parameterized version. */
protected PostgresServerFilesITBase(String caseName, String sql,
String expected, String error,
String[] params) {
this.caseName = caseName;
this.sql = sql.trim();
this.expected = expected;
this.error = error;
this.params = params;
}
protected PostgresServerFilesITBase() {
}
protected void generateAndCheckResult() throws Exception {
TestBase.generateAndCheckResult((TestBase.GenerateAndCheckResult)this,
caseName, expected, error);
}
/** Copy a resource from the test jar into a temp file so that it
* can be read by things that do not take a URL.
*/
protected File copyResourceToTempFile(String resource) throws IOException {
File tempFile = File.createTempFile(getClass().getSimpleName(), null);
tempFile.deleteOnExit();
try (InputStream istr = getClass().getResourceAsStream(resource);
OutputStream ostr = new FileOutputStream(tempFile)) {
ByteStreams.copy(istr, ostr);
}
return tempFile;
}
}