From 8799068b593b9dd40b569a520c32b7e7dd541783 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sat, 17 Feb 2018 23:53:48 +0300 Subject: run tests on h2 database --- .../configuration/RepositoryConfiguration.java | 182 +++++++++++++++++++-- 1 file changed, 166 insertions(+), 16 deletions(-) (limited to 'juick-server-jdbc/src/test/java/com/juick/configuration') diff --git a/juick-server-jdbc/src/test/java/com/juick/configuration/RepositoryConfiguration.java b/juick-server-jdbc/src/test/java/com/juick/configuration/RepositoryConfiguration.java index 72968e8e..08b5b787 100644 --- a/juick-server-jdbc/src/test/java/com/juick/configuration/RepositoryConfiguration.java +++ b/juick-server-jdbc/src/test/java/com/juick/configuration/RepositoryConfiguration.java @@ -17,8 +17,6 @@ package com.juick.configuration; -import ch.vorburger.exec.ManagedProcessException; -import ch.vorburger.mariadb4j.DB; import com.juick.service.ImagesService; import com.juick.service.MockImagesService; import com.juick.service.search.SearchService; @@ -40,29 +38,181 @@ import java.util.List; @ComponentScan(basePackages = "com.juick.service") public class RepositoryConfiguration { - @Bean(destroyMethod = "stop") - DB db() throws ManagedProcessException { - DB db = DB.newEmbeddedDB(33306); - - db.start(); - db.createDB("juick"); - db.source("schema.sql"); - - return db; - } - @DependsOn("db") @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("net.sf.log4jdbc.DriverSpy"); - dataSource.setUrl("jdbc:log4jdbc:mysql://localhost:33306/juick?autoReconnect=true&user=root"); + dataSource.setDriverClassName("org.h2.Driver"); + dataSource.setUrl("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;mode=MYSQL"); return dataSource; } @Bean public JdbcTemplate jdbcTemplate() { - return new JdbcTemplate(dataSource()); + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource()); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bl_users (user_id int(10) unsigned NOT NULL, " + + "bl_user_id int(10) unsigned NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS bl_tags (user_id int(10) unsigned NOT NULL, " + + "tag_id int(10) unsigned NOT NULL)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS wl_users (user_id int(10) unsigned NOT NULL, " + + "wl_user_id int(10) unsigned NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages (" + + "message_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "user_id int(10) unsigned NOT NULL," + + "place_id int(10) unsigned DEFAULT NULL," + + "lat decimal(10,7) DEFAULT NULL," + + "lon decimal(10,7) DEFAULT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," + + "replies smallint(5) unsigned NOT NULL DEFAULT 0," + + "maxreplyid smallint(5) unsigned NOT NULL DEFAULT 0," + + "privacy tinyint(4) NOT NULL DEFAULT '1'," + + "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," + + "readonly tinyint(1) NOT NULL DEFAULT 0," + + "likes smallint(6) NOT NULL DEFAULT 0," + + "`popular` tinyint(4) NOT NULL DEFAULT '0'," + + "hidden tinyint(3) unsigned NOT NULL DEFAULT 0," + + "updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages_tags (" + + "message_id int(10) unsigned NOT NULL," + + "tag_id int(10) unsigned NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS users (" + + "id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "nick char(64) NOT NULL," + + "`lang` enum('en','ru','fr','fa','__') NOT NULL DEFAULT '__'," + + "passw char(32) NOT NULL," + + "banned tinyint(3) unsigned NOT NULL DEFAULT 0, " + + "PRIMARY KEY(id), UNIQUE KEY(nick))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS useroptions (" + + "user_id int(10) unsigned NOT NULL," + + "jnotify tinyint(1) NOT NULL DEFAULT 1," + + "`repliesview` tinyint(1) NOT NULL DEFAULT '0'," + + "subscr_active tinyint(1) NOT NULL DEFAULT 1)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_users (" + + "user_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL," + + "jid char(64) DEFAULT NULL," + + "active tinyint(1) NOT NULL DEFAULT 1," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " + + "PRIMARY KEY (suser_id, user_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_messages (" + + "message_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL, PRIMARY KEY (suser_id, message_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS subscr_tags (" + + "tag_id int(10) unsigned NOT NULL," + + "suser_id int(10) unsigned NOT NULL, PRIMARY KEY (suser_id, tag_id))"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS messages_txt (" + + "message_id int(10) unsigned NOT NULL," + + "tags varchar(255)," + + "repliesby varchar(96)," + + "txt TEXT)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS tags(" + + "tag_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "synonym_id int(10) unsigned DEFAULT NULL," + + "name char(48) NOT NULL," + + "top tinyint(1) unsigned NOT NULL DEFAULT 0," + + "stat_messages int(10) unsigned NOT NULL DEFAULT 0," + + "stat_users smallint(5) unsigned NOT NULL DEFAULT 0)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS jids(" + + "user_id int(10) unsigned NOT NULL AUTO_INCREMENT," + + "jid char(64) NOT NULL," + + "active tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "loginhash char(36) unsigned DEFAULT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS replies (" + + "message_id int(10) unsigned NOT NULL," + + "reply_id smallint(5) unsigned NOT NULL," + + "user_id int(10) unsigned NOT NULL," + + "replyto smallint(5) unsigned NOT NULL DEFAULT 0," + + "ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + "attach nchar(3) check (attach in ('jpg', 'mp4', 'png'))," + + "txt text)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS twitter(" + + "user_id int(10) unsigned NOT NULL," + + "access_token char(64) NOT NULL," + + "access_token_secret char(64) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "uname char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS facebook(" + + "user_id int(10) unsigned NOT NULL," + + "fb_id int(20) unsigned NOT NULL," + + "access_token char(255) NOT NULL," + + "loginhash char(36) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "fb_name char(64) NOT NULL," + + "fb_link char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS vk(" + + "user_id int(10) unsigned NOT NULL," + + "vk_id int(20) unsigned NOT NULL," + + "access_token char(128) NOT NULL," + + "loginhash char(36) NOT NULL," + + "crosspost tinyint(1) unsigned NOT NULL DEFAULT '1'," + + "vk_name char(64) NOT NULL," + + "vk_link char(64) NOT NULL," + + "ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)"); + jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS emails (" + + " user_id int(10) unsigned NOT NULL," + + " email char(64) NOT NULL," + + " subscr_hour tinyint(4) DEFAULT NULL," + + " PRIMARY KEY (email)" + + ")"); + jdbcTemplate.execute("CREATE TABLE favorites (" + + " user_id int(10) unsigned NOT NULL," + + " message_id int(10) unsigned NOT NULL," + + " ts datetime NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE logins (" + + " user_id int(10) unsigned NOT NULL," + + " hash char(16) NOT NULL," + + " PRIMARY KEY (user_id)" + + ")"); + jdbcTemplate.execute("CREATE TABLE `telegram` (" + + " `user_id` int(10) unsigned DEFAULT NULL," + + " `tg_id` bigint(20) NOT NULL," + + " `tg_name` char(64) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + " `loginhash` char(36) DEFAULT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE `pm` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `user_id_to` int(10) unsigned NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP," + + " `txt` text NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE `pm_streams` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `user_id_to` int(10) unsigned NOT NULL," + + " `lastmessage` datetime NOT NULL," + + " `lastview` datetime DEFAULT NULL," + + " `unread` smallint(5) unsigned NOT NULL DEFAULT '0'" + + ")"); + jdbcTemplate.execute("CREATE TABLE `android` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `regid` char(255) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE `ios` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `token` char(64) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE `winphone` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `url` char(255) NOT NULL," + + " `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + + ")"); + jdbcTemplate.execute("CREATE TABLE `tags_ignore` (" + + " `tag_id` int(10) unsigned NOT NULL" + + ")"); + jdbcTemplate.execute("CREATE TABLE `users_subscr` (" + + " `user_id` int(10) unsigned NOT NULL," + + " `cnt` smallint(5) unsigned NOT NULL DEFAULT '0'," + + " PRIMARY KEY (`user_id`)" + + ")"); + return jdbcTemplate; } @Bean -- cgit v1.2.3