package com.palantir.atlasdb.keyvalue.rdbms;

import java.io.IOException;

import org.junit.AfterClass;
import org.postgresql.jdbc2.optional.PoolingDataSource;

import com.palantir.atlasdb.keyvalue.api.KeyValueService;
import com.palantir.atlasdb.keyvalue.impl.AbstractAtlasDbKeyValueServiceTest;
import com.palantir.common.base.Throwables;

import ru.yandex.qatools.embed.postgresql.PostgresExecutable;
import ru.yandex.qatools.embed.postgresql.PostgresProcess;
import ru.yandex.qatools.embed.postgresql.PostgresStarter;
import ru.yandex.qatools.embed.postgresql.config.PostgresConfig;

public class PostgresKeyValueServiceTest extends AbstractAtlasDbKeyValueServiceTest {

    private static final String DB_NAME = "test";

    final static PostgresStarter<PostgresExecutable, PostgresProcess> runtime;
    final static PostgresConfig config;
    final static PostgresExecutable exec;
    final static PostgresProcess process;
    final static PoolingDataSource dataSource;
    static {
        try {
            runtime = PostgresStarter.getDefaultInstance();
            config = PostgresConfig.defaultWithDbName(DB_NAME);
            exec = runtime.prepare(config);
            process = exec.start();
            dataSource = new PoolingDataSource();
            dataSource.setDatabaseName(config.storage().dbName());
        } catch (IOException e) {
            throw Throwables.throwUncheckedException(e);
        }
    }

    private KeyValueService kvs;

    @AfterClass
    public static void shutdownEmbeddedPostgres() {
        process.stop();
    }

    public static PostgresKeyValueService newEmbeddedInstance() {
        PostgresKeyValueService kvs = new PostgresKeyValueService(dataSource);
        kvs.initializeFromFreshInstance();
        return kvs;
    }

    @Override
    protected KeyValueService getKeyValueService() {
        if (kvs == null) {
            KeyValueService ret = newEmbeddedInstance();
            kvs = ret;
        }
        return kvs;
    }
}

@@ -1,8 +1,597 @@
+/**%0A * Copyright 2015 Palantir Technologies%0A *%0A * Licensed under the BSD-3 License (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://opensource.org/licenses/BSD-3-Clause%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A
 package 

Add licence header to postgres test file.