From f2bdef7fa7b519c6e24c59caa0b2e9748520cc6f Mon Sep 17 00:00:00 2001 From: ascrutae Date: Wed, 2 Nov 2016 20:11:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90DataFileIndex=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skywalking-storage/pom.xml | 28 +----- .../eye/skywalking/storage/config/Config.java | 13 +++ .../storage/index/DataFileFinder.java | 24 +++++ .../storage/index/DataFileIndexEngine.java | 22 ++--- .../storage/index/DataFileIndexFinder.java | 5 - .../storage/index/DataFileIndexUpdator.java | 88 +++++++++++++++++- .../storage/index/DataIndexMetaData.java | 7 -- .../storage/index/IndexL1Cache.java | 56 +++++++++++ .../storage/index/IndexL2Cache.java | 40 ++++++++ .../index/cache/DataFileIndexCache.java | 26 ------ .../index/cache/DataFileIndexReader.java | 9 -- .../index/cache/DataFileIndexWriter.java | 8 -- .../storage/index/cache/IndexL1Cache.java | 7 -- .../storage/index/cache/IndexL2Cache.java | 7 -- .../DataFileIndexSaveFailedException.java | 10 ++ .../search/HyperSqlSearchSpeedReporter.java | 92 +++++++++++++++++++ .../search/SearchSpeedReporter.java | 37 ++++++++ .../a/eye/skywalking/search/TreeSetTest.java | 40 ++++++++ .../storage/index/DataIndexFileOperator.java | 7 ++ .../index/HyperSQLConnectorPoolTest.java | 56 ----------- 20 files changed, 416 insertions(+), 166 deletions(-) create mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/config/Config.java create mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileFinder.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexFinder.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataIndexMetaData.java create mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL1Cache.java create mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL2Cache.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexCache.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexReader.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexWriter.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL1Cache.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL2Cache.java create mode 100644 skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/exception/DataFileIndexSaveFailedException.java create mode 100644 skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/HyperSqlSearchSpeedReporter.java create mode 100644 skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/SearchSpeedReporter.java create mode 100644 skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/TreeSetTest.java create mode 100644 skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/DataIndexFileOperator.java delete mode 100644 skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/HyperSQLConnectorPoolTest.java diff --git a/skywalking-storage-center/skywalking-storage/pom.xml b/skywalking-storage-center/skywalking-storage/pom.xml index 146211d62..b51d698e1 100644 --- a/skywalking-storage-center/skywalking-storage/pom.xml +++ b/skywalking-storage-center/skywalking-storage/pom.xml @@ -61,37 +61,11 @@ HikariCP 2.4.3 - org.hsqldb hsqldb 2.3.4 - - org.powermock - powermock-core - 1.6.5 - test - - - org.powermock - powermock-module-junit4 - 1.6.5 - test - - - org.powermock - powermock-api-mockito - 1.6.5 - test - - - - org.mockito - mockito-core - 2.2.9 - test - @@ -184,4 +158,6 @@ + + diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/config/Config.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/config/Config.java new file mode 100644 index 000000000..186b7fa68 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/config/Config.java @@ -0,0 +1,13 @@ +package com.a.eye.skywalking.storage.config; + +/** + * Created by xin on 2016/11/2. + */ +public class Config { + public static class DataFileIndex { + + public static String STORAGE_BASE_PATH = "/tmp/skywalking/index"; + + public static String DATA_FILE_INDEX_FILE_NAME = "data_file.index"; + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileFinder.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileFinder.java new file mode 100644 index 000000000..e84dad1fe --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileFinder.java @@ -0,0 +1,24 @@ +package com.a.eye.skywalking.storage.index; + +/** + * Created by xin on 2016/11/2. + */ +public class DataFileFinder { + + private IndexL1Cache l1Cache; + private IndexL2Cache l2Cache; + + public DataFileFinder(IndexL1Cache l1Cache, IndexL2Cache l2Cache) { + this.l1Cache = l1Cache; + this.l2Cache = l2Cache; + } + + public long find(long timestamp) { + Long index = l1Cache.find(timestamp); + if (index == null) { + index = l2Cache.find(timestamp); + } + return index; + } + +} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexEngine.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexEngine.java index dc66ab542..7591cc95d 100644 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexEngine.java +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexEngine.java @@ -1,28 +1,24 @@ package com.a.eye.skywalking.storage.index; -import com.a.eye.skywalking.storage.index.cache.DataFileIndexCache; -/** - * 用于初始化DataFileIndex的数据,并且提供操作Index的所有类 - */ public class DataFileIndexEngine { - private static final DataFileIndexCache indexCache; + private static IndexL1Cache l1Cache; + private static IndexL2Cache l2Cache; - static { - indexCache = new DataFileIndexCache(); + public static void start(){ + l1Cache = new IndexL1Cache(); + l2Cache = new IndexL2Cache(); + newUpdator().init(); } - private DataFileIndexEngine() { - //DO Nothing + public static DataFileFinder newFinder() { + return new DataFileFinder(l1Cache, l2Cache); } - public static DataFileIndexFinder newFinder() { - return indexCache; - } public static DataFileIndexUpdator newUpdator() { - return indexCache; + return new DataFileIndexUpdator(l1Cache, l2Cache); } } diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexFinder.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexFinder.java deleted file mode 100644 index 4e3a1f44b..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexFinder.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.a.eye.skywalking.storage.index; - -public interface DataFileIndexFinder { - DataIndexMetaData find(long timestamp); -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexUpdator.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexUpdator.java index 958c32922..e19a7250d 100644 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexUpdator.java +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataFileIndexUpdator.java @@ -1,5 +1,89 @@ package com.a.eye.skywalking.storage.index; -public interface DataFileIndexUpdator { - void update(long timestamp); +import com.a.eye.skywalking.storage.index.exception.DataFileIndexSaveFailedException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import static com.a.eye.skywalking.storage.config.Config.DataFileIndex.DATA_FILE_INDEX_FILE_NAME; +import static com.a.eye.skywalking.storage.config.Config.DataFileIndex.STORAGE_BASE_PATH; + +public class DataFileIndexUpdator { + + private static Logger logger = LogManager.getLogger(DataFileIndexUpdator.class); + private IndexL1Cache l1Cache; + private IndexL2Cache l2Cache; + + public DataFileIndexUpdator(IndexL1Cache l1Cache, IndexL2Cache l2Cache) { + this.l1Cache = l1Cache; + this.l2Cache = l2Cache; + } + + public void addRecord(long timestamp) { + logger.info("Updating index. timestamp:{}", timestamp); + try { + updateFile(timestamp); + updateCache(timestamp); + } catch (Exception e) { + logger.error("Failed to add index record", e); + } + } + + private void updateCache(long timestamp) { + l1Cache.update(timestamp); + l2Cache.update(timestamp); + } + + + private void updateFile(long timestamp) throws DataFileIndexSaveFailedException { + BufferedWriter writer = null; + try { + writer = new BufferedWriter(new FileWriter(new File(STORAGE_BASE_PATH, DATA_FILE_INDEX_FILE_NAME))); + writer.write(String.valueOf(timestamp)); + writer.newLine(); + writer.close(); + } catch (IOException e) { + throw new DataFileIndexSaveFailedException("Failed to save index[" + timestamp + "]", e); + } finally { + if (writer != null) { + try { + writer.close(); + } catch (IOException e) { + logger.error("Failed to close index file", e); + } + } + } + } + + + void init() { + List indexData = new ArrayList<>(); + BufferedReader indexFileReader = null; + try { + indexFileReader = + new BufferedReader(new FileReader(new File(STORAGE_BASE_PATH, DATA_FILE_INDEX_FILE_NAME))); + String indexDataStr = null; + while ((indexDataStr = indexFileReader.readLine()) != null) { + indexData.add(Long.parseLong(indexDataStr)); + } + } catch (IOException e) { + logger.error("Failed to read index data.", e); + } finally { + if (indexFileReader != null) { + try { + indexFileReader.close(); + } catch (IOException e) { + logger.error("Failed to close index file", e); + } + } + } + + Collections.reverse(indexData); + l1Cache.initData(indexData); + l2Cache.initData(indexData); + } } diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataIndexMetaData.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataIndexMetaData.java deleted file mode 100644 index 176bf332b..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/DataIndexMetaData.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.a.eye.skywalking.storage.index; - -/** - * Created by xin on 2016/11/1. - */ -public class DataIndexMetaData { -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL1Cache.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL1Cache.java new file mode 100644 index 000000000..b50042979 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL1Cache.java @@ -0,0 +1,56 @@ +package com.a.eye.skywalking.storage.index; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.List; +import java.util.TreeSet; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Created by xin on 2016/11/2. + */ +public class IndexL1Cache { + + private static final int MAX_DATA_KEEP_SIZE = 30; + private static Logger logger = LogManager.getLogger(IndexL1Cache.class); + private TreeSet cacheData = new TreeSet(); + private final ReadWriteLock updateLock = new ReentrantReadWriteLock(); + + void initData(List data) { + for (int i = 0; i < MAX_DATA_KEEP_SIZE; i++) { + this.cacheData.add(data.get(i)); + } + } + + public Long find(long timestamp) { + Lock lock = updateLock.readLock(); + try { + lock.lock(); + return cacheData.higher(timestamp); + } finally { + lock.unlock(); + } + } + + public void update(long timestamp) { + TreeSet newCacheData = new TreeSet<>(cacheData); + newCacheData.add(timestamp); + + if (newCacheData.size() >= MAX_DATA_KEEP_SIZE + 1) { + long removedData = newCacheData.pollFirst(); + logger.info("Add cache data : {}, removed cache Data:{}", timestamp, removedData); + } + + Lock lock = updateLock.writeLock(); + try { + lock.lock(); + cacheData = newCacheData; + } finally { + lock.unlock(); + } + } + +} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL2Cache.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL2Cache.java new file mode 100644 index 000000000..5f59cb0f5 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/IndexL2Cache.java @@ -0,0 +1,40 @@ +package com.a.eye.skywalking.storage.index; + +import java.util.List; +import java.util.TreeSet; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +public class IndexL2Cache { + + private TreeSet cacheData = new TreeSet(); + private ReadWriteLock updateLock = new ReentrantReadWriteLock(); + + void initData(List data) { + this.cacheData.addAll(cacheData); + } + + public long find(long timestamp) { + Lock lock = updateLock.readLock(); + try { + lock.lock(); + return this.cacheData.higher(timestamp); + } finally { + lock.unlock(); + } + } + + public void update(long timestamp) { + TreeSet newCacheData = new TreeSet<>(cacheData); + newCacheData.add(timestamp); + Lock lock = updateLock.writeLock(); + + try { + lock.lock(); + cacheData.add(timestamp); + } finally { + lock.unlock(); + } + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexCache.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexCache.java deleted file mode 100644 index 3cd27fb76..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexCache.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.a.eye.skywalking.storage.index.cache; - -import com.a.eye.skywalking.storage.index.DataFileIndexFinder; -import com.a.eye.skywalking.storage.index.DataFileIndexUpdator; -import com.a.eye.skywalking.storage.index.DataIndexMetaData; - -public class DataFileIndexCache implements DataFileIndexFinder, DataFileIndexUpdator { - - private IndexL1Cache l1Cache; - private IndexL2Cache l2Cache; - - public DataFileIndexCache() { - //load the index data - } - - @Override - public void update(long timestamp) { - // TODO: 2016/11/1 通知Cache更新,以及Index的文件更新 - } - - @Override - public DataIndexMetaData find(long timestamp) { - // TODO: 2016/11/1 查找一级缓存,二级缓存 - return null; - } -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexReader.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexReader.java deleted file mode 100644 index 1c78adb8d..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexReader.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.a.eye.skywalking.storage.index.cache; - -import java.util.SortedSet; - -public class DataFileIndexReader { - public SortedSet read() { - return null; - } -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexWriter.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexWriter.java deleted file mode 100644 index 5576ce5f3..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/DataFileIndexWriter.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.a.eye.skywalking.storage.index.cache; - -public class DataFileIndexWriter { - - public void write(long timestamp) { - - } -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL1Cache.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL1Cache.java deleted file mode 100644 index 44791dd87..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL1Cache.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.a.eye.skywalking.storage.index.cache; - -/** - * Created by xin on 2016/11/1. - */ -class IndexL1Cache { -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL2Cache.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL2Cache.java deleted file mode 100644 index ef7878762..000000000 --- a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/cache/IndexL2Cache.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.a.eye.skywalking.storage.index.cache; - -/** - * Created by xin on 2016/11/1. - */ -class IndexL2Cache { -} diff --git a/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/exception/DataFileIndexSaveFailedException.java b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/exception/DataFileIndexSaveFailedException.java new file mode 100644 index 000000000..8cfa047f2 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/index/exception/DataFileIndexSaveFailedException.java @@ -0,0 +1,10 @@ +package com.a.eye.skywalking.storage.index.exception; + +/** + * Created by xin on 2016/11/2. + */ +public class DataFileIndexSaveFailedException extends Exception { + public DataFileIndexSaveFailedException(String message, Exception e) { + super(message, e); + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/HyperSqlSearchSpeedReporter.java b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/HyperSqlSearchSpeedReporter.java new file mode 100644 index 000000000..a55c386f5 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/HyperSqlSearchSpeedReporter.java @@ -0,0 +1,92 @@ +package com.a.eye.skywalking.search; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * Created by xin on 2016/11/1. + */ +public class HyperSqlSearchSpeedReporter { + + private static final long BASE_TIME_STAMP = 1477983548L; + + private static boolean useSingConnection = true; + private static HikariDataSource hikariDataSource; + private static Connection connection; + + private static String CREATE_TABLE_SQL = + "CREATE TABLE data_index\n" + "(\n" + " id INT IDENTITY PRIMARY KEY NOT NULL,\n" + + " startTime BIGINT NOT NULL\n" + ");\n"; + private static String CREATE_INDEX_SQL = + "CREATE UNIQUE INDEX \"table_name_startTime_uindex\" ON data_index (startTime);"; + + private static String INSERT_DATA_SQL = "INSERT INTO data_index(startTime) VALUES(?);"; + + private static String QUERY_DATA_SQL = + "SELECT startTime FROM data_index WHERE startTime > ? ORDER BY startTime" + " ASC LIMIT 1"; + + public static void initData() throws SQLException { + HikariConfig config = new HikariConfig(); + config.setJdbcUrl("jdbc:hsqldb:mem:test-speed"); + config.setUsername("root"); + config.setPassword("root"); + hikariDataSource = new HikariDataSource(config); + connection = hikariDataSource.getConnection(); + + PreparedStatement ps = connection.prepareStatement(CREATE_TABLE_SQL); + ps.execute(); + ps = connection.prepareStatement(CREATE_INDEX_SQL); + ps.execute(); + + ps = connection.prepareStatement(INSERT_DATA_SQL); + for (int i = 0; i < 3000; i++) { + ps.setLong(1, BASE_TIME_STAMP + i * 1000 * 60 * 60); + //System.out.print(BASE_TIME_STAMP + i * 1000 * 60 * 60); + //System.out.print(","); + ps.execute(); + } + + //System.out.println(); + + ps.close(); + } + + public static long find(long element) throws SQLException { + Connection connection = null; + if (!useSingConnection) { + connection = hikariDataSource.getConnection(); + }else{ + connection = HyperSqlSearchSpeedReporter.connection; + } + PreparedStatement preparedStatement = connection.prepareStatement(QUERY_DATA_SQL); + preparedStatement.setLong(1, element); + ResultSet resultSet = preparedStatement.executeQuery(); + resultSet.next(); + long result = resultSet.getLong("startTime"); + preparedStatement.close(); + + if (!useSingConnection){ + connection.close(); + } + + return result; + } + + public static void main(String[] args) throws SQLException { + initData(); + long startTime = System.nanoTime(); + + for (long i = 0; i < 100000000L; i++) { + find(1478323448L); + } + + long totalTime = System.nanoTime() - startTime; + System.out.println("total time : " + totalTime + " " + (totalTime * 1.0 / 100000000L)); + + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/SearchSpeedReporter.java b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/SearchSpeedReporter.java new file mode 100644 index 000000000..acd881d94 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/SearchSpeedReporter.java @@ -0,0 +1,37 @@ +package com.a.eye.skywalking.search; + +import java.util.Arrays; +import java.util.TreeSet; + +public class SearchSpeedReporter { + + private static final long BASE_TIME_STAMP = 1477983548L; + private static Long[] testedData = new Long[3000]; + + private static TreeSet tree = new TreeSet(); + + public static void initData() { + for (int i = 0; i < 3000; i++) { + testedData[i] = new Long(BASE_TIME_STAMP + i * 1000 * 60 * 60L); + } + tree.addAll(Arrays.asList(testedData)); + } + + public static long find(long toElement) { + return tree.higher(toElement); + } + + + public static void main(String[] args) { + initData(); + + long startTime = System.nanoTime(); + + for (long i = 0; i < 100000000L; i++) { + find(1478323448L); + } + + long totalTime = System.nanoTime() - startTime; + System.out.println("total time : " + totalTime + " " + (totalTime * 1.0 / 100000000L)); + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/TreeSetTest.java b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/TreeSetTest.java new file mode 100644 index 000000000..adac9c616 --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/search/TreeSetTest.java @@ -0,0 +1,40 @@ +package com.a.eye.skywalking.search; + +import org.junit.Before; +import org.junit.Test; + +import java.util.TreeSet; + +import static org.junit.Assert.assertEquals; + +/** + * Created by xin on 2016/11/1. + */ +public class TreeSetTest { + + private TreeSet treeSet = new TreeSet(); + + @Before + public void setup(){ + treeSet.add(9L); + treeSet.add(3L); + treeSet.add(13L); + treeSet.add(15L); + treeSet.add(1L); + treeSet.add(11L); + treeSet.add(5L); + treeSet.add(7L); + } + + @Test + public void testGetElement(){ + assertEquals(new Long(5), treeSet.higher(4L)); + } + + @Test + public void testRemoveElement(){ + assertEquals(new Long(1), treeSet.first()); + treeSet.pollFirst(); + assertEquals(new Long(3), treeSet.first()); + } +} diff --git a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/DataIndexFileOperator.java b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/DataIndexFileOperator.java new file mode 100644 index 000000000..770b2113b --- /dev/null +++ b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/DataIndexFileOperator.java @@ -0,0 +1,7 @@ +package com.a.eye.skywalking.storage.index; + +/** + * Created by xin on 2016/10/31. + */ +public class DataIndexFileOperator { +} diff --git a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/HyperSQLConnectorPoolTest.java b/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/HyperSQLConnectorPoolTest.java deleted file mode 100644 index da324a3c1..000000000 --- a/skywalking-storage-center/skywalking-storage/src/test/java/com/a/eye/skywalking/storage/index/HyperSQLConnectorPoolTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.a.eye.skywalking.storage.index; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * Created by xin on 2016/10/31. - */ -@RunWith(MockitoJUnitRunner.class) -@PrepareForTest({HyperSQLConnector.class, HyperSQLConnectorPool.class}) -public class HyperSQLConnectorPoolTest { - - - - @Before - public void setUp() throws Exception { - - } - - @After - public void tearDown() throws Exception { - - } - - @Test - public void getOrCreateConnector() throws Exception { - - } - - @Test - public void createConnector() throws Exception { - for (int i = 0; i < 100; i++) { - long index = System.currentTimeMillis(); - HyperSQLConnector connector = HyperSQLConnectorPool.createConnector(index); - assertNotNull(connector); - if (i < 30) { - assertEquals(i + 1, HyperSQLConnectorPool.getCurrentConnectorsSize()); - } else { - assertEquals(30, HyperSQLConnectorPool.getCurrentConnectorsSize()); - } - - assertEquals(HyperSQLConnectorPool.getIndex()[0], index); - } - - } - -}