Return-Path: X-Original-To: apmail-incubator-connectors-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-connectors-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 453219CCD for ; Sun, 18 Dec 2011 08:37:51 +0000 (UTC) Received: (qmail 56352 invoked by uid 500); 18 Dec 2011 08:37:50 -0000 Delivered-To: apmail-incubator-connectors-commits-archive@incubator.apache.org Received: (qmail 56299 invoked by uid 500); 18 Dec 2011 08:37:50 -0000 Mailing-List: contact connectors-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: connectors-dev@incubator.apache.org Delivered-To: mailing list connectors-commits@incubator.apache.org Received: (qmail 56187 invoked by uid 99); 18 Dec 2011 08:37:50 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Dec 2011 08:37:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Dec 2011 08:37:47 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5891D2388B9B; Sun, 18 Dec 2011 08:37:02 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1220353 [10/11] - in /incubator/lcf/branches/CONNECTORS-286/warthog-reimport: ./ src/main/java/org/apache/warthog/api/ src/main/java/org/apache/warthog/bytekeyvalue/ src/main/java/org/apache/warthog/common/ src/main/java/org/apache/warthog... Date: Sun, 18 Dec 2011 08:36:56 -0000 To: connectors-commits@incubator.apache.org From: kwright@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111218083702.5891D2388B9B@eris.apache.org> Modified: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java?rev=1220353&r1=1220352&r2=1220353&view=diff ============================================================================== --- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java (original) +++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java Sun Dec 18 08:36:52 2011 @@ -1,172 +1,172 @@ -/* $Id: InMemTransactionImpl.java 1208500 2011-11-30 16:38:45Z kwright $ */ - -/** -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package org.apache.warthog.tests; - -import org.apache.warthog.api.*; -import org.apache.warthog.keyvalue.*; -import org.apache.warthog.transactionalkeyvaluestore.*; -import java.util.*; - -/** This class implements a transaction that is in progress, completely in memory. -*/ -public class InMemTransactionImpl implements WHTransaction -{ - protected WHAtomicKeyValueStore underlyingStore; - - protected KeyMap checkData = new KeyMap(); - protected KeyMap localData = null; - - /** Constructor */ - public InMemTransactionImpl(WHAtomicKeyValueStore underlyingStore) - { - this.underlyingStore = underlyingStore; - } - - /** Set a value. May be null. */ - public void put(WHKey key, WHKeyValue value) - throws WHException - { - if (localData == null) - localData = new KeyMap(); - localData.put(key,value); - } - - /** Get a value. Null returned if no value. */ - public WHKeyValue get(WHKey key) - throws WHException - { - if (localData != null) - { - if (localData.containsKey(key)) - return localData.get(key); - } - if (checkData.containsKey(key)) - return checkData.get(key); - WHKeyValue value = underlyingStore.get(key); - checkData.put(key,value); - return value; - } - - /** Check to see if this transaction has become inconsistent. - * If so, a WHDeadlockException is thrown. - */ - public void check() - throws WHException - { - underlyingStore.check(checkData); - } - - /** Commit this transaction */ - public void commit() - throws WHException - { - if (localData != null) - underlyingStore.setAll(checkData,localData); - else - underlyingStore.check(checkData); - } - - /** Abandon this transaction. - * This is called as a nicety to free any resources associated with the - * transaction. The implementation should also be robust as far as - * freeing resources if this method is NOT called, but might perform - * the necessary logic in a finalizer at an arbitrary time. - */ - public void abandon() - { - // Does nothing so long as the entire temporary transaction is in - // memory. - } - - /** Local implementation of WHKey/WHValue map */ - protected static class KeyMap implements WHKeyMap - { - protected Map map = new HashMap(); - - public KeyMap() - { - } - - /** Get a value from the map. - */ - public WHKeyValue get(WHKey key) - throws WHException - { - return map.get(new WrappedKey(key)); - } - - /** Iterate over the keys in the map. - */ - public WHKeyIterator iterator() - throws WHException - { - return new KeyIterator(map.keySet().iterator()); - } - - /** Get the size of the map. - */ - public long size() - throws WHException - { - return (long)map.size(); - } - - /** Check if the map contains the specified key. - */ - public boolean containsKey(WHKey key) - { - return map.containsKey(new WrappedKey(key)); - } - - /** Put a value. - */ - public void put(WHKey key, WHKeyValue value) - { - map.put(new WrappedKey(key),value); - } - } - - /** Key iterator for KeyMap */ - protected static class KeyIterator implements WHKeyIterator - { - protected Iterator iterator; - - public KeyIterator(Iterator iterator) - { - this.iterator = iterator; - } - - /** Check if there is another value */ - public boolean hasNext() - throws WHException - { - return iterator.hasNext(); - } - - /** Get the next value */ - public WHKey next() - throws WHException - { - return iterator.next().getKey(); - } - - } - -} +/* $Id$ */ + +/** +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.warthog.tests; + +import org.apache.warthog.api.*; +import org.apache.warthog.keyvalue.*; +import org.apache.warthog.transactionalkeyvaluestore.*; +import java.util.*; + +/** This class implements a transaction that is in progress, completely in memory. +*/ +public class InMemTransactionImpl implements WHTransaction +{ + protected WHAtomicKeyValueStore underlyingStore; + + protected KeyMap checkData = new KeyMap(); + protected KeyMap localData = null; + + /** Constructor */ + public InMemTransactionImpl(WHAtomicKeyValueStore underlyingStore) + { + this.underlyingStore = underlyingStore; + } + + /** Set a value. May be null. */ + public void put(WHKey key, WHKeyValue value) + throws WHException + { + if (localData == null) + localData = new KeyMap(); + localData.put(key,value); + } + + /** Get a value. Null returned if no value. */ + public WHKeyValue get(WHKey key) + throws WHException + { + if (localData != null) + { + if (localData.containsKey(key)) + return localData.get(key); + } + if (checkData.containsKey(key)) + return checkData.get(key); + WHKeyValue value = underlyingStore.get(key); + checkData.put(key,value); + return value; + } + + /** Check to see if this transaction has become inconsistent. + * If so, a WHDeadlockException is thrown. + */ + public void check() + throws WHException + { + underlyingStore.check(checkData); + } + + /** Commit this transaction */ + public void commit() + throws WHException + { + if (localData != null) + underlyingStore.setAll(checkData,localData); + else + underlyingStore.check(checkData); + } + + /** Abandon this transaction. + * This is called as a nicety to free any resources associated with the + * transaction. The implementation should also be robust as far as + * freeing resources if this method is NOT called, but might perform + * the necessary logic in a finalizer at an arbitrary time. + */ + public void abandon() + { + // Does nothing so long as the entire temporary transaction is in + // memory. + } + + /** Local implementation of WHKey/WHValue map */ + protected static class KeyMap implements WHKeyMap + { + protected Map map = new HashMap(); + + public KeyMap() + { + } + + /** Get a value from the map. + */ + public WHKeyValue get(WHKey key) + throws WHException + { + return map.get(new WrappedKey(key)); + } + + /** Iterate over the keys in the map. + */ + public WHKeyIterator iterator() + throws WHException + { + return new KeyIterator(map.keySet().iterator()); + } + + /** Get the size of the map. + */ + public long size() + throws WHException + { + return (long)map.size(); + } + + /** Check if the map contains the specified key. + */ + public boolean containsKey(WHKey key) + { + return map.containsKey(new WrappedKey(key)); + } + + /** Put a value. + */ + public void put(WHKey key, WHKeyValue value) + { + map.put(new WrappedKey(key),value); + } + } + + /** Key iterator for KeyMap */ + protected static class KeyIterator implements WHKeyIterator + { + protected Iterator iterator; + + public KeyIterator(Iterator iterator) + { + this.iterator = iterator; + } + + /** Check if there is another value */ + public boolean hasNext() + throws WHException + { + return iterator.hasNext(); + } + + /** Get the next value */ + public WHKey next() + throws WHException + { + return iterator.next().getKey(); + } + + } + +} Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionImpl.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java?rev=1220353&r1=1220352&r2=1220353&view=diff ============================================================================== --- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java (original) +++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java Sun Dec 18 08:36:52 2011 @@ -1,46 +1,46 @@ -/* $Id: InMemTransactionalStoreImpl.java 1205763 2011-11-24 09:15:57Z kwright $ */ - -/** -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package org.apache.warthog.tests; - -import org.apache.warthog.api.*; -import org.apache.warthog.keyvalue.*; -import org.apache.warthog.transactionalkeyvaluestore.*; - -/** Class implementing a transactional key/value store completely in memory. -*/ -public class InMemTransactionalStoreImpl implements WHTransactionalStore -{ - /** Underlying atomic key/value store */ - protected WHAtomicKeyValueStore underlyingStore; - - /** Constructor. */ - public InMemTransactionalStoreImpl(WHAtomicKeyValueStore underlyingStore) - { - this.underlyingStore = underlyingStore; - } - - /** Create a transaction. */ - public WHTransaction createTransaction() - throws WHException - { - return new InMemTransactionImpl(this.underlyingStore); - } - -} +/* $Id$ */ + +/** +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.apache.warthog.tests; + +import org.apache.warthog.api.*; +import org.apache.warthog.keyvalue.*; +import org.apache.warthog.transactionalkeyvaluestore.*; + +/** Class implementing a transactional key/value store completely in memory. +*/ +public class InMemTransactionalStoreImpl implements WHTransactionalStore +{ + /** Underlying atomic key/value store */ + protected WHAtomicKeyValueStore underlyingStore; + + /** Constructor. */ + public InMemTransactionalStoreImpl(WHAtomicKeyValueStore underlyingStore) + { + this.underlyingStore = underlyingStore; + } + + /** Create a transaction. */ + public WHTransaction createTransaction() + throws WHException + { + return new InMemTransactionImpl(this.underlyingStore); + } + +} Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/InMemTransactionalStoreImpl.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java?rev=1220353&r1=1220352&r2=1220353&view=diff ============================================================================== --- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java (original) +++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java Sun Dec 18 08:36:52 2011 @@ -1,473 +1,473 @@ -/* $Id: MultiThreadTest.java 1212814 2011-12-10 15:26:17Z kwright $ */ - -/** -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.apache.warthog.tests; - -import org.apache.warthog.api.*; -import org.apache.warthog.transactionalkeyvaluestore.*; -import org.apache.warthog.keyvaluetablestore.*; -import org.apache.warthog.keyvalue.*; -import org.apache.warthog.common.*; -import org.junit.*; -import static org.junit.Assert.*; -import java.util.*; - -public class MultiThreadTest -{ - - @Test - public void singleThreadBaselineTest() - throws Exception - { - doWrites(1); - } - - @Test - public void writeOnlyTest() - throws Exception - { - doWrites(24); - } - - protected void doWrites(int threadCount) - throws Exception - { - int totalInserts = 10000; - - int repeatCount = totalInserts/threadCount; - - WHAtomicKeyValueStore store = new InMemAtomicNativeNonblockingKeyValueStore(16777216); - - WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); - - ts.beginTransaction(); - ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); - ts.commitTransaction(); - - ts.beginTransaction(); - WHTable table = ts.lookupTable("testtable"); - ts.createIndex("testindex1",table, - new String[]{"colB","colA"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex2",table, - new String[]{"colD","colC"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex3",table, - new String[]{"colF","colE"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex4",table, - new String[]{"colH","colG"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex5",table, - new String[]{"colJ","colI"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.commitTransaction(); - - InsertThread[] threads = new InsertThread[threadCount]; - for (int i = 0 ; i < threadCount ; i++) - { - threads[i] = new InsertThread("Worker thread "+i,store,repeatCount); - } - - long startTime = System.currentTimeMillis(); - for (int i = 0 ; i < threadCount ; i++) - { - threads[i].start(); - } - - // Join at the end - - int contentions = 0; - for (int i = 0 ; i < threadCount ; i++) - { - threads[i].join(); - Throwable e = threads[i].getException(); - if (e != null) - { - if (e instanceof Error) - throw (Error)e; - if (e instanceof RuntimeException) - throw (RuntimeException)e; - throw (Exception)e; - } - contentions += threads[i].getContentions(); - } - - System.out.println(Integer.toString(totalInserts)+" writes across "+ - Integer.toString(threadCount)+" threads took "+ - new Long(System.currentTimeMillis()-startTime)+" ms and had "+ - Integer.toString(contentions)+" contention retries"); - } - - @Test - public void writeQueryTest() - throws Exception - { - int totalCount = 10000/4; - int threadCount = 24; - - int repeatCount = totalCount/threadCount; - - WHAtomicKeyValueStore store = new InMemAtomicNativeNonblockingKeyValueStore(16777216); - - WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); - - ts.beginTransaction(); - ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); - ts.commitTransaction(); - - ts.beginTransaction(); - WHTable table = ts.lookupTable("testtable"); - ts.createIndex("testindex1",table, - new String[]{"colB","colA"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex2",table, - new String[]{"colD","colC"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex3",table, - new String[]{"colF","colE"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex4",table, - new String[]{"colH","colG"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex5",table, - new String[]{"colJ","colI"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.commitTransaction(); - - TaskThread[] threads = new TaskThread[threadCount]; - for (int i = 0 ; i < threadCount ; i++) - { - threads[i] = new TaskThread("Worker thread "+i,store,repeatCount); - } - - long startTime = System.currentTimeMillis(); - for (int i = 0 ; i < threadCount ; i++) - { - threads[i].start(); - } - - // Join at the end - - int contentions = 0; - for (int i = 0 ; i < threadCount ; i++) - { - threads[i].join(); - Throwable e = threads[i].getException(); - if (e != null) - { - if (e instanceof Error) - throw (Error)e; - if (e instanceof RuntimeException) - throw (RuntimeException)e; - throw (Exception)e; - } - contentions += threads[i].getContentions(); - } - - System.out.println(Integer.toString(threadCount*repeatCount)+" writes and "+ - Integer.toString(threadCount*repeatCount*3)+" reads across "+ - Integer.toString(threadCount)+" threads took "+ - new Long(System.currentTimeMillis()-startTime)+" ms and had "+ - Integer.toString(contentions)+" contention retries"); - } - - // Protected methods - - protected static String randomString(Random r) - { - return new Long(randomLong(r)).toString(); - } - - protected static long randomLong(Random r) - { - return r.nextLong(); - } - - protected static class InsertThread extends Thread - { - protected int repeatCount; - protected int contentions = 0; - protected WHAtomicKeyValueStore store; - protected Throwable exception; - protected Random r = new Random(); - - public InsertThread(String name, WHAtomicKeyValueStore store, int repeatCount) - { - super(); - this.repeatCount = repeatCount; - this.store = store; - setName(name); - } - - public void run() - { - try - { - WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); - performInserts(ts); - } - catch (Throwable e) - { - exception = e; - } - } - - public Throwable getException() - { - return exception; - } - - public int getContentions() - { - return contentions; - } - - protected void backOff() - throws InterruptedException - { - contentions++; - //Thread.sleep(r.nextInt(100)); - Thread.yield(); - } - - protected void performInserts(WHTableStore ts) - throws InterruptedException, WHException - { - // Task consists of a certain number of inserts and queries - for (int i = 0 ; i < repeatCount ; i++) - { - // Add a row - while (true) - { - ts.beginTransaction(); - try - { - WHTable table = ts.lookupTable("testtable"); - table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, - new WHValue[]{ - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r))}); - ts.commitTransaction(); - break; - } - catch (WHConcurrencyException e) - { - backOff(); - continue; - } - finally - { - ts.abandonTransaction(); - } - } - } - } - - } - - protected static class TaskThread extends Thread - { - protected int repeatCount; - protected int contentions = 0; - protected WHAtomicKeyValueStore store; - protected Throwable exception; - protected Random r = new Random(); - - public TaskThread(String name, WHAtomicKeyValueStore store, int repeatCount) - { - super(); - this.repeatCount = repeatCount; - this.store = store; - setName(name); - } - - public void run() - { - try - { - WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); - performTask(ts); - } - catch (Throwable e) - { - exception = e; - } - } - - public Throwable getException() - { - return exception; - } - - public int getContentions() - { - return contentions; - } - - protected void backOff() - throws InterruptedException - { - contentions++; - //Thread.sleep(r.nextInt(100)); - Thread.yield(); - } - - protected void performTask(WHTableStore ts) - throws InterruptedException, WHException - { - // Task consists of a certain number of inserts and queries - for (int i = 0 ; i < repeatCount ; i++) - { - // Add a row - while (true) - { - ts.beginTransaction(); - try - { - WHTable table = ts.lookupTable("testtable"); - table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, - new WHValue[]{ - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r)), - new LongValue(randomLong(r)),new StringValue(randomString(r))}); - ts.commitTransaction(); - break; - } - catch (WHConcurrencyException e) - { - backOff(); - continue; - } - finally - { - ts.abandonTransaction(); - } - } - - // Do a query - while (true) - { - ts.beginTransaction(); - try - { - WHIndex index = ts.lookupIndex("testindex1"); - WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ - new IndexBetween(new StringValue("1"),new StringValue("2")), - null},null); - while (true) - { - if (accessor.getCurrentRowID() == null) - break; - accessor.advance(); - } - ts.commitTransaction(); - break; - } - catch (WHConcurrencyException e) - { - backOff(); - continue; - } - finally - { - ts.abandonTransaction(); - } - } - - // Do another query - while (true) - { - ts.beginTransaction(); - try - { - WHIndex index = ts.lookupIndex("testindex2"); - WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ - new IndexBetween(new StringValue("23"),new StringValue("25")), - null},null); - while (true) - { - if (accessor.getCurrentRowID() == null) - break; - accessor.advance(); - } - ts.commitTransaction(); - break; - } - catch (WHConcurrencyException e) - { - backOff(); - continue; - } - finally - { - ts.abandonTransaction(); - } - } - - // Do a third query - while (true) - { - ts.beginTransaction(); - try - { - WHIndex index = ts.lookupIndex("testindex3"); - WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ - new IndexBetween(new StringValue("02"),new StringValue("04")), - null},null); - while (true) - { - if (accessor.getCurrentRowID() == null) - break; - accessor.advance(); - } - ts.commitTransaction(); - break; - } - catch (WHConcurrencyException e) - { - backOff(); - continue; - } - finally - { - ts.abandonTransaction(); - } - } - - } - } - - } - +/* $Id$ */ + +/** +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.apache.warthog.tests; + +import org.apache.warthog.api.*; +import org.apache.warthog.transactionalkeyvaluestore.*; +import org.apache.warthog.keyvaluetablestore.*; +import org.apache.warthog.keyvalue.*; +import org.apache.warthog.common.*; +import org.junit.*; +import static org.junit.Assert.*; +import java.util.*; + +public class MultiThreadTest +{ + + @Test + public void singleThreadBaselineTest() + throws Exception + { + doWrites(1); + } + + @Test + public void writeOnlyTest() + throws Exception + { + doWrites(24); + } + + protected void doWrites(int threadCount) + throws Exception + { + int totalInserts = 10000; + + int repeatCount = totalInserts/threadCount; + + WHAtomicKeyValueStore store = new InMemAtomicNativeNonblockingKeyValueStore(16777216); + + WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); + + ts.beginTransaction(); + ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); + ts.commitTransaction(); + + ts.beginTransaction(); + WHTable table = ts.lookupTable("testtable"); + ts.createIndex("testindex1",table, + new String[]{"colB","colA"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex2",table, + new String[]{"colD","colC"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex3",table, + new String[]{"colF","colE"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex4",table, + new String[]{"colH","colG"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex5",table, + new String[]{"colJ","colI"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.commitTransaction(); + + InsertThread[] threads = new InsertThread[threadCount]; + for (int i = 0 ; i < threadCount ; i++) + { + threads[i] = new InsertThread("Worker thread "+i,store,repeatCount); + } + + long startTime = System.currentTimeMillis(); + for (int i = 0 ; i < threadCount ; i++) + { + threads[i].start(); + } + + // Join at the end + + int contentions = 0; + for (int i = 0 ; i < threadCount ; i++) + { + threads[i].join(); + Throwable e = threads[i].getException(); + if (e != null) + { + if (e instanceof Error) + throw (Error)e; + if (e instanceof RuntimeException) + throw (RuntimeException)e; + throw (Exception)e; + } + contentions += threads[i].getContentions(); + } + + System.out.println(Integer.toString(totalInserts)+" writes across "+ + Integer.toString(threadCount)+" threads took "+ + new Long(System.currentTimeMillis()-startTime)+" ms and had "+ + Integer.toString(contentions)+" contention retries"); + } + + @Test + public void writeQueryTest() + throws Exception + { + int totalCount = 10000/4; + int threadCount = 24; + + int repeatCount = totalCount/threadCount; + + WHAtomicKeyValueStore store = new InMemAtomicNativeNonblockingKeyValueStore(16777216); + + WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); + + ts.beginTransaction(); + ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); + ts.commitTransaction(); + + ts.beginTransaction(); + WHTable table = ts.lookupTable("testtable"); + ts.createIndex("testindex1",table, + new String[]{"colB","colA"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex2",table, + new String[]{"colD","colC"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex3",table, + new String[]{"colF","colE"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex4",table, + new String[]{"colH","colG"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex5",table, + new String[]{"colJ","colI"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.commitTransaction(); + + TaskThread[] threads = new TaskThread[threadCount]; + for (int i = 0 ; i < threadCount ; i++) + { + threads[i] = new TaskThread("Worker thread "+i,store,repeatCount); + } + + long startTime = System.currentTimeMillis(); + for (int i = 0 ; i < threadCount ; i++) + { + threads[i].start(); + } + + // Join at the end + + int contentions = 0; + for (int i = 0 ; i < threadCount ; i++) + { + threads[i].join(); + Throwable e = threads[i].getException(); + if (e != null) + { + if (e instanceof Error) + throw (Error)e; + if (e instanceof RuntimeException) + throw (RuntimeException)e; + throw (Exception)e; + } + contentions += threads[i].getContentions(); + } + + System.out.println(Integer.toString(threadCount*repeatCount)+" writes and "+ + Integer.toString(threadCount*repeatCount*3)+" reads across "+ + Integer.toString(threadCount)+" threads took "+ + new Long(System.currentTimeMillis()-startTime)+" ms and had "+ + Integer.toString(contentions)+" contention retries"); + } + + // Protected methods + + protected static String randomString(Random r) + { + return new Long(randomLong(r)).toString(); + } + + protected static long randomLong(Random r) + { + return r.nextLong(); + } + + protected static class InsertThread extends Thread + { + protected int repeatCount; + protected int contentions = 0; + protected WHAtomicKeyValueStore store; + protected Throwable exception; + protected Random r = new Random(); + + public InsertThread(String name, WHAtomicKeyValueStore store, int repeatCount) + { + super(); + this.repeatCount = repeatCount; + this.store = store; + setName(name); + } + + public void run() + { + try + { + WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); + performInserts(ts); + } + catch (Throwable e) + { + exception = e; + } + } + + public Throwable getException() + { + return exception; + } + + public int getContentions() + { + return contentions; + } + + protected void backOff() + throws InterruptedException + { + contentions++; + //Thread.sleep(r.nextInt(100)); + Thread.yield(); + } + + protected void performInserts(WHTableStore ts) + throws InterruptedException, WHException + { + // Task consists of a certain number of inserts and queries + for (int i = 0 ; i < repeatCount ; i++) + { + // Add a row + while (true) + { + ts.beginTransaction(); + try + { + WHTable table = ts.lookupTable("testtable"); + table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, + new WHValue[]{ + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r))}); + ts.commitTransaction(); + break; + } + catch (WHConcurrencyException e) + { + backOff(); + continue; + } + finally + { + ts.abandonTransaction(); + } + } + } + } + + } + + protected static class TaskThread extends Thread + { + protected int repeatCount; + protected int contentions = 0; + protected WHAtomicKeyValueStore store; + protected Throwable exception; + protected Random r = new Random(); + + public TaskThread(String name, WHAtomicKeyValueStore store, int repeatCount) + { + super(); + this.repeatCount = repeatCount; + this.store = store; + setName(name); + } + + public void run() + { + try + { + WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(store)); + performTask(ts); + } + catch (Throwable e) + { + exception = e; + } + } + + public Throwable getException() + { + return exception; + } + + public int getContentions() + { + return contentions; + } + + protected void backOff() + throws InterruptedException + { + contentions++; + //Thread.sleep(r.nextInt(100)); + Thread.yield(); + } + + protected void performTask(WHTableStore ts) + throws InterruptedException, WHException + { + // Task consists of a certain number of inserts and queries + for (int i = 0 ; i < repeatCount ; i++) + { + // Add a row + while (true) + { + ts.beginTransaction(); + try + { + WHTable table = ts.lookupTable("testtable"); + table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, + new WHValue[]{ + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r)), + new LongValue(randomLong(r)),new StringValue(randomString(r))}); + ts.commitTransaction(); + break; + } + catch (WHConcurrencyException e) + { + backOff(); + continue; + } + finally + { + ts.abandonTransaction(); + } + } + + // Do a query + while (true) + { + ts.beginTransaction(); + try + { + WHIndex index = ts.lookupIndex("testindex1"); + WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ + new IndexBetween(new StringValue("1"),new StringValue("2")), + null},null); + while (true) + { + if (accessor.getCurrentRowID() == null) + break; + accessor.advance(); + } + ts.commitTransaction(); + break; + } + catch (WHConcurrencyException e) + { + backOff(); + continue; + } + finally + { + ts.abandonTransaction(); + } + } + + // Do another query + while (true) + { + ts.beginTransaction(); + try + { + WHIndex index = ts.lookupIndex("testindex2"); + WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ + new IndexBetween(new StringValue("23"),new StringValue("25")), + null},null); + while (true) + { + if (accessor.getCurrentRowID() == null) + break; + accessor.advance(); + } + ts.commitTransaction(); + break; + } + catch (WHConcurrencyException e) + { + backOff(); + continue; + } + finally + { + ts.abandonTransaction(); + } + } + + // Do a third query + while (true) + { + ts.beginTransaction(); + try + { + WHIndex index = ts.lookupIndex("testindex3"); + WHAccessor accessor = index.buildAccessor(new IndexCriteria[]{ + new IndexBetween(new StringValue("02"),new StringValue("04")), + null},null); + while (true) + { + if (accessor.getCurrentRowID() == null) + break; + accessor.advance(); + } + ts.commitTransaction(); + break; + } + catch (WHConcurrencyException e) + { + backOff(); + continue; + } + finally + { + ts.abandonTransaction(); + } + } + + } + } + + } + } \ No newline at end of file Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/MultiThreadTest.java ------------------------------------------------------------------------------ svn:keywords = Id Modified: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java?rev=1220353&r1=1220352&r2=1220353&view=diff ============================================================================== --- incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java (original) +++ incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java Sun Dec 18 08:36:52 2011 @@ -1,121 +1,121 @@ -/* $Id: PerformanceTest.java 1208116 2011-11-29 22:36:26Z kwright $ */ - -/** -* Licensed to the Apache Software Foundation (ASF) under one or more -* contributor license agreements. See the NOTICE file distributed with -* this work for additional information regarding copyright ownership. -* The ASF licenses this file to You under the Apache License, Version 2.0 -* (the "License"); you may not use this file except in compliance with -* the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package org.apache.warthog.tests; - -import org.apache.warthog.api.*; -import org.apache.warthog.transactionalkeyvaluestore.*; -import org.apache.warthog.keyvaluetablestore.*; -import org.apache.warthog.keyvalue.*; -import org.apache.warthog.common.*; -import org.junit.*; -import static org.junit.Assert.*; -import java.util.*; - -public class PerformanceTest -{ - - @Test - public void rowCreateTest() - throws Exception - { - WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(new InMemAtomicNativeKeyValueStore(16777216))); - - ts.beginTransaction(); - ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); - ts.commitTransaction(); - - ts.beginTransaction(); - WHTable table = ts.lookupTable("testtable"); - ts.createIndex("testindex1",table, - new String[]{"colB","colA"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex2",table, - new String[]{"colD","colC"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex3",table, - new String[]{"colF","colE"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex4",table, - new String[]{"colH","colG"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.createIndex("testindex5",table, - new String[]{"colJ","colI"}, - new String[]{"org.apache.warthog.common.StringComparatorAscending", - "org.apache.warthog.common.LongComparatorAscending"},false); - ts.commitTransaction(); - - int rowCount = 10000; - Random r = new Random(); - String[] str1Values = new String[rowCount]; - long[] long1Values = new long[rowCount]; - String[] str2Values = new String[rowCount]; - long[] long2Values = new long[rowCount]; - String[] str3Values = new String[rowCount]; - long[] long3Values = new long[rowCount]; - String[] str4Values = new String[rowCount]; - long[] long4Values = new long[rowCount]; - String[] str5Values = new String[rowCount]; - long[] long5Values = new long[rowCount]; - for (int i = 0 ; i < rowCount ; i++) - { - str1Values[i] = randomString(r); - long1Values[i] = randomLong(r); - str2Values[i] = randomString(r); - long2Values[i] = randomLong(r); - str3Values[i] = randomString(r); - long3Values[i] = randomLong(r); - str4Values[i] = randomString(r); - long4Values[i] = randomLong(r); - str5Values[i] = randomString(r); - long5Values[i] = randomLong(r); - } - long startTime = System.currentTimeMillis(); - for (int i = 0 ; i < rowCount ; i++) - { - ts.beginTransaction(); - table = ts.lookupTable("testtable"); - table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, - new WHValue[]{ - new LongValue(long1Values[i]),new StringValue(str1Values[i]), - new LongValue(long2Values[i]),new StringValue(str2Values[i]), - new LongValue(long3Values[i]),new StringValue(str3Values[i]), - new LongValue(long4Values[i]),new StringValue(str4Values[i]), - new LongValue(long5Values[i]),new StringValue(str5Values[i])}); - ts.commitTransaction(); - } - System.out.println("Create of "+Integer.toString(rowCount)+" rows took "+new Long(System.currentTimeMillis() - startTime).toString()+" ms"); - } - - // Protected methods - - protected static String randomString(Random r) - { - return new Long(randomLong(r)).toString(); - } - - protected static long randomLong(Random r) - { - return r.nextLong(); - } - +/* $Id$ */ + +/** +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package org.apache.warthog.tests; + +import org.apache.warthog.api.*; +import org.apache.warthog.transactionalkeyvaluestore.*; +import org.apache.warthog.keyvaluetablestore.*; +import org.apache.warthog.keyvalue.*; +import org.apache.warthog.common.*; +import org.junit.*; +import static org.junit.Assert.*; +import java.util.*; + +public class PerformanceTest +{ + + @Test + public void rowCreateTest() + throws Exception + { + WHTableStore ts = new TableStore(new InMemNativeTransactionalStoreImpl(new InMemAtomicNativeKeyValueStore(16777216))); + + ts.beginTransaction(); + ts.createTable("testtable",new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}); + ts.commitTransaction(); + + ts.beginTransaction(); + WHTable table = ts.lookupTable("testtable"); + ts.createIndex("testindex1",table, + new String[]{"colB","colA"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex2",table, + new String[]{"colD","colC"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex3",table, + new String[]{"colF","colE"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex4",table, + new String[]{"colH","colG"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.createIndex("testindex5",table, + new String[]{"colJ","colI"}, + new String[]{"org.apache.warthog.common.StringComparatorAscending", + "org.apache.warthog.common.LongComparatorAscending"},false); + ts.commitTransaction(); + + int rowCount = 10000; + Random r = new Random(); + String[] str1Values = new String[rowCount]; + long[] long1Values = new long[rowCount]; + String[] str2Values = new String[rowCount]; + long[] long2Values = new long[rowCount]; + String[] str3Values = new String[rowCount]; + long[] long3Values = new long[rowCount]; + String[] str4Values = new String[rowCount]; + long[] long4Values = new long[rowCount]; + String[] str5Values = new String[rowCount]; + long[] long5Values = new long[rowCount]; + for (int i = 0 ; i < rowCount ; i++) + { + str1Values[i] = randomString(r); + long1Values[i] = randomLong(r); + str2Values[i] = randomString(r); + long2Values[i] = randomLong(r); + str3Values[i] = randomString(r); + long3Values[i] = randomLong(r); + str4Values[i] = randomString(r); + long4Values[i] = randomLong(r); + str5Values[i] = randomString(r); + long5Values[i] = randomLong(r); + } + long startTime = System.currentTimeMillis(); + for (int i = 0 ; i < rowCount ; i++) + { + ts.beginTransaction(); + table = ts.lookupTable("testtable"); + table.insertRow(new String[]{"colA","colB","colC","colD","colE","colF","colG","colH","colI","colJ"}, + new WHValue[]{ + new LongValue(long1Values[i]),new StringValue(str1Values[i]), + new LongValue(long2Values[i]),new StringValue(str2Values[i]), + new LongValue(long3Values[i]),new StringValue(str3Values[i]), + new LongValue(long4Values[i]),new StringValue(str4Values[i]), + new LongValue(long5Values[i]),new StringValue(str5Values[i])}); + ts.commitTransaction(); + } + System.out.println("Create of "+Integer.toString(rowCount)+" rows took "+new Long(System.currentTimeMillis() - startTime).toString()+" ms"); + } + + // Protected methods + + protected static String randomString(Random r) + { + return new Long(randomLong(r)).toString(); + } + + protected static long randomLong(Random r) + { + return r.nextLong(); + } + } \ No newline at end of file Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/lcf/branches/CONNECTORS-286/warthog-reimport/src/test/java/org/apache/warthog/tests/PerformanceTest.java ------------------------------------------------------------------------------ svn:keywords = Id