http://git-wip-us.apache.org/repos/asf/geode/blob/f79beb1e/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/IBuilder.java
----------------------------------------------------------------------
diff --git 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/IBuilder.java 
b/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/IBuilder.java
deleted file mode 100644
index 28340c6..0000000
--- 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/IBuilder.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2011 Clearspring Technologies, Inc.
- *
- * Licensed 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.geode.redis.internal.hll;
-
-
-public interface IBuilder<T> {
-
-  T build();
-
-  int sizeof();
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/f79beb1e/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/ICardinality.java
----------------------------------------------------------------------
diff --git 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/ICardinality.java
 
b/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/ICardinality.java
deleted file mode 100644
index 71369b1..0000000
--- 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/ICardinality.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2011 Clearspring Technologies, Inc.
- *
- * Licensed 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.geode.redis.internal.hll;
-
-
-import java.io.IOException;
-
-
-public interface ICardinality {
-
-  /**
-   * @param o stream element
-   * @return false if the value returned by cardinality() is unaffected by the 
appearance of o in
-   *         the stream.
-   */
-  boolean offer(Object o);
-
-  /**
-   * Offer the value as a hashed long value
-   *
-   * @param hashedLong - the hash of the item to offer to the estimator
-   * @return false if the value returned by cardinality() is unaffected by the 
appearance of
-   *         hashedLong in the stream
-   */
-  boolean offerHashed(long hashedLong);
-
-  /**
-   * Offer the value as a hashed long value
-   *
-   * @param hashedInt - the hash of the item to offer to the estimator
-   * @return false if the value returned by cardinality() is unaffected by the 
appearance of
-   *         hashedInt in the stream
-   */
-  boolean offerHashed(int hashedInt);
-
-  /**
-   * @return the number of unique elements in the stream or an estimate thereof
-   */
-  long cardinality();
-
-  /**
-   * @return size in bytes needed for serialization
-   */
-  int sizeof();
-
-  /**
-   * @return byte[]
-   * @throws IOException
-   */
-  byte[] getBytes() throws IOException;
-
-  /**
-   * Merges estimators to produce a new estimator for the combined streams of 
this estimator and
-   * those passed as arguments.
-   * <p/>
-   * Nor this estimator nor the one passed as parameters are modified.
-   *
-   * @param estimators Zero or more compatible estimators
-   * @throws CardinalityMergeException If at least one of the estimators is 
not compatible with this
-   *         one
-   */
-  ICardinality merge(ICardinality... estimators) throws 
CardinalityMergeException;
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/f79beb1e/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/MurmurHash.java
----------------------------------------------------------------------
diff --git 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/MurmurHash.java 
b/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/MurmurHash.java
deleted file mode 100644
index e5c1b1a..0000000
--- 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/MurmurHash.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * 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.geode.redis.internal.hll;
-
-
-/**
- * This is a very fast, non-cryptographic hash suitable for general hash-based 
lookup. See
- * http://murmurhash.googlepages.com/ for more details.
- * <p/>
- * <p>
- * The C version of MurmurHash 2.0 found at that site was ported to Java by 
Andrzej Bialecki (ab at
- * getopt org).
- * </p>
- */
-public class MurmurHash {
-  public static int hash(Object o) {
-    if (o == null) {
-      return 0;
-    }
-    if (o instanceof Long) {
-      return hashLong((Long) o);
-    }
-    if (o instanceof Integer) {
-      return hashLong((Integer) o);
-    }
-    if (o instanceof Double) {
-      return hashLong(Double.doubleToRawLongBits((Double) o));
-    }
-    if (o instanceof Float) {
-      return hashLong(Float.floatToRawIntBits((Float) o));
-    }
-    if (o instanceof String) {
-      return hash(((String) o).getBytes());
-    }
-    if (o instanceof byte[]) {
-      return hash((byte[]) o);
-    }
-    return hash(o.toString());
-  }
-
-  public static int hash(byte[] data) {
-    return hash(data, 0, data.length, -1);
-  }
-
-  public static int hash(byte[] data, int seed) {
-    return hash(data, 0, data.length, seed);
-  }
-
-  public static int hash(byte[] data, int offset, int length, int seed) {
-    int m = 0x5bd1e995;
-    int r = 24;
-
-    int h = seed ^ length;
-
-    int len_4 = length >> 2;
-
-    for (int i = 0; i < len_4; i++) {
-      int i_4 = i << 2;
-      int k = data[offset + i_4 + 3];
-      k = k << 8;
-      k = k | (data[offset + i_4 + 2] & 0xff);
-      k = k << 8;
-      k = k | (data[offset + i_4 + 1] & 0xff);
-      k = k << 8;
-      k = k | (data[offset + i_4 + 0] & 0xff);
-      k *= m;
-      k ^= k >>> r;
-      k *= m;
-      h *= m;
-      h ^= k;
-    }
-
-    // avoid calculating modulo
-    int len_m = len_4 << 2;
-    int left = length - len_m;
-
-    if (left != 0) {
-      if (left >= 3) {
-        h ^= (int) data[offset + length - 3] << 16;
-      }
-      if (left >= 2) {
-        h ^= (int) data[offset + length - 2] << 8;
-      }
-      if (left >= 1) {
-        h ^= (int) data[offset + length - 1];
-      }
-
-      h *= m;
-    }
-
-    h ^= h >>> 13;
-    h *= m;
-    h ^= h >>> 15;
-
-    return h;
-  }
-
-  public static int hashLong(long data) {
-    int m = 0x5bd1e995;
-    int r = 24;
-
-    int h = 0;
-
-    int k = (int) data * m;
-    k ^= k >>> r;
-    h ^= k * m;
-
-    k = (int) (data >> 32) * m;
-    k ^= k >>> r;
-    h *= m;
-    h ^= k * m;
-
-    h ^= h >>> 13;
-    h *= m;
-    h ^= h >>> 15;
-
-    return h;
-  }
-
-  public static long hash64(Object o) {
-    if (o == null) {
-      return 0l;
-    } else if (o instanceof String) {
-      final byte[] bytes = ((String) o).getBytes();
-      return hash64(bytes, bytes.length);
-    } else if (o instanceof byte[]) {
-      final byte[] bytes = (byte[]) o;
-      return hash64(bytes, bytes.length);
-    }
-    return hash64(o.toString());
-  }
-
-  // 64 bit implementation copied from here: 
https://github.com/tnm/murmurhash-java
-
-  /**
-   * Generates 64 bit hash from byte array with default seed value.
-   *
-   * @param data byte array to hash
-   * @param length length of the array to hash
-   * @return 64 bit hash of the given string
-   */
-  public static long hash64(final byte[] data, int length) {
-    return hash64(data, length, 0xe17a1465);
-  }
-
-
-  /**
-   * Generates 64 bit hash from byte array of the given length and seed.
-   *
-   * @param data byte array to hash
-   * @param length length of the array to hash
-   * @param seed initial seed value
-   * @return 64 bit hash of the given array
-   */
-  public static long hash64(final byte[] data, int length, int seed) {
-    final long m = 0xc6a4a7935bd1e995L;
-    final int r = 47;
-
-    long h = (seed & 0xffffffffl) ^ (length * m);
-
-    int length8 = length / 8;
-
-    for (int i = 0; i < length8; i++) {
-      final int i8 = i * 8;
-      long k = ((long) data[i8 + 0] & 0xff) + (((long) data[i8 + 1] & 0xff) << 
8)
-          + (((long) data[i8 + 2] & 0xff) << 16) + (((long) data[i8 + 3] & 
0xff) << 24)
-          + (((long) data[i8 + 4] & 0xff) << 32) + (((long) data[i8 + 5] & 
0xff) << 40)
-          + (((long) data[i8 + 6] & 0xff) << 48) + (((long) data[i8 + 7] & 
0xff) << 56);
-
-      k *= m;
-      k ^= k >>> r;
-      k *= m;
-
-      h ^= k;
-      h *= m;
-    }
-
-    switch (length % 8) {
-      case 7:
-        h ^= (long) (data[(length & ~7) + 6] & 0xff) << 48;
-      case 6:
-        h ^= (long) (data[(length & ~7) + 5] & 0xff) << 40;
-      case 5:
-        h ^= (long) (data[(length & ~7) + 4] & 0xff) << 32;
-      case 4:
-        h ^= (long) (data[(length & ~7) + 3] & 0xff) << 24;
-      case 3:
-        h ^= (long) (data[(length & ~7) + 2] & 0xff) << 16;
-      case 2:
-        h ^= (long) (data[(length & ~7) + 1] & 0xff) << 8;
-      case 1:
-        h ^= (long) (data[length & ~7] & 0xff);
-        h *= m;
-    };
-
-    h ^= h >>> r;
-    h *= m;
-    h ^= h >>> r;
-
-    return h;
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/f79beb1e/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/RegisterSet.java
----------------------------------------------------------------------
diff --git 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/RegisterSet.java
 
b/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/RegisterSet.java
deleted file mode 100644
index 97ac98d..0000000
--- 
a/geode-redis/src/main/java/org/apache/geode/redis/internal/hll/RegisterSet.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2012 Clearspring Technologies, Inc.
- *
- * Licensed 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.geode.redis.internal.hll;
-
-
-public class RegisterSet {
-
-  public final static int LOG2_BITS_PER_WORD = 6;
-  public final static int REGISTER_SIZE = 5;
-
-  public final int count;
-  public final int size;
-
-  private final int[] M;
-
-  public RegisterSet(int count) {
-    this(count, null);
-  }
-
-  public RegisterSet(int count, int[] initialValues) {
-    this.count = count;
-
-    if (initialValues == null) {
-      this.M = new int[getSizeForCount(count)];
-    } else {
-      this.M = initialValues;
-    }
-    this.size = this.M.length;
-  }
-
-  public static int getBits(int count) {
-    return count / LOG2_BITS_PER_WORD;
-  }
-
-  public static int getSizeForCount(int count) {
-    int bits = getBits(count);
-    if (bits == 0) {
-      return 1;
-    } else if (bits % Integer.SIZE == 0) {
-      return bits;
-    } else {
-      return bits + 1;
-    }
-  }
-
-  public void set(int position, int value) {
-    int bucketPos = position / LOG2_BITS_PER_WORD;
-    int shift = REGISTER_SIZE * (position - (bucketPos * LOG2_BITS_PER_WORD));
-    this.M[bucketPos] = (this.M[bucketPos] & ~(0x1f << shift)) | (value << 
shift);
-  }
-
-  public int get(int position) {
-    int bucketPos = position / LOG2_BITS_PER_WORD;
-    int shift = REGISTER_SIZE * (position - (bucketPos * LOG2_BITS_PER_WORD));
-    return (this.M[bucketPos] & (0x1f << shift)) >>> shift;
-  }
-
-  public boolean updateIfGreater(int position, int value) {
-    int bucket = position / LOG2_BITS_PER_WORD;
-    int shift = REGISTER_SIZE * (position - (bucket * LOG2_BITS_PER_WORD));
-    int mask = 0x1f << shift;
-
-    // Use long to avoid sign issues with the left-most shift
-    long curVal = this.M[bucket] & mask;
-    long newVal = value << shift;
-    if (curVal < newVal) {
-      this.M[bucket] = (int) ((this.M[bucket] & ~mask) | newVal);
-      return true;
-    } else {
-      return false;
-    }
-  }
-
-  public void merge(RegisterSet that) {
-    for (int bucket = 0; bucket < M.length; bucket++) {
-      int word = 0;
-      for (int j = 0; j < LOG2_BITS_PER_WORD; j++) {
-        int mask = 0x1f << (REGISTER_SIZE * j);
-
-        int thisVal = (this.M[bucket] & mask);
-        int thatVal = (that.M[bucket] & mask);
-        word |= (thisVal < thatVal) ? thatVal : thisVal;
-      }
-      this.M[bucket] = word;
-    }
-  }
-
-  int[] readOnlyBits() {
-    return M;
-  }
-
-  public int[] bits() {
-    int[] copy = new int[size];
-    System.arraycopy(M, 0, copy, 0, M.length);
-    return copy;
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/f79beb1e/geode-redis/src/test/java/org/apache/geode/redis/ConcurrentStartTest.java
----------------------------------------------------------------------
diff --git 
a/geode-redis/src/test/java/org/apache/geode/redis/ConcurrentStartTest.java 
b/geode-redis/src/test/java/org/apache/geode/redis/ConcurrentStartTest.java
index 4a5e717..7c2db3b 100644
--- a/geode-redis/src/test/java/org/apache/geode/redis/ConcurrentStartTest.java
+++ b/geode-redis/src/test/java/org/apache/geode/redis/ConcurrentStartTest.java
@@ -14,72 +14,86 @@
  */
 package org.apache.geode.redis;
 
+import org.apache.geode.cache.Cache;
+import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.distributed.DistributedSystem;
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.RestoreSystemProperties;
 import org.junit.experimental.categories.Category;
 
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+
+import static org.junit.Assert.*;
+
 // TODO I think this test can now be removed
 @Category(IntegrationTest.class)
 public class ConcurrentStartTest extends RedisTestBase {
+  private Cache cache;
+  private int numServers = 10;
+
+  @Rule
+  public RestoreSystemProperties restoreSystemProperties = new 
RestoreSystemProperties();
+
+  @Before
+  public void setUp() {
+    System.setProperty(DistributedSystem.PROPERTIES_FILE_PROPERTY,
+        getClass().getSimpleName() + ".properties");
+  }
+
+  @After
+  public void tearDown() {
+    if (this.cache != null) {
+      this.cache.close();
+      this.cache = null;
+    }
+  }
+
+  @Test
+  public void testCachelessStart() throws InterruptedException {
+    runNServers(numServers);
+    GemFireCacheImpl.getInstance().close();
+  }
+
+  @Test
+  public void testCachefulStart() throws InterruptedException {
+    CacheFactory cf = new CacheFactory();
+    cf.set(MCAST_PORT, "0");
+    cf.set(LOCATORS, "");
+    this.cache = cf.create();
+
+    runNServers(numServers);
+  }
+
+  private void runNServers(int n) throws InterruptedException {
+    final int[] ports = 
AvailablePortHelper.getRandomAvailableTCPPorts(numServers);
+    final Thread[] threads = new Thread[n];
+    for (int i = 0; i < n; i++) {
+      final int j = i;
+      Runnable r = new Runnable() {
+
+        @Override
+        public void run() {
+          GeodeRedisServer s = new GeodeRedisServer(ports[j]);
+          s.start();
+          s.shutdown();
+        }
+      };
 
-  // private Cache cache;
-  // private int numServers = 10;
-  //
-  // @Rule
-  // public RestoreSystemProperties restoreSystemProperties = new 
RestoreSystemProperties();
-  //
-  // @Before
-  // public void setUp() {
-  // System.setProperty(DistributedSystem.PROPERTIES_FILE_PROPERTY,
-  // getClass().getSimpleName() + ".properties");
-  // }
-  //
-  // @After
-  // public void tearDown() {
-  // if (this.cache != null) {
-  // this.cache.close();
-  // this.cache = null;
-  // }
-  // }
-  //
-  // @Test
-  // public void testCachelessStart() throws InterruptedException {
-  // runNServers(numServers);
-  // GemFireCacheImpl.getInstance().close();
-  // }
-  //
-  // @Test
-  // public void testCachefulStart() throws InterruptedException {
-  // CacheFactory cf = new CacheFactory();
-  // cf.set(MCAST_PORT, "0");
-  // cf.set(LOCATORS, "");
-  // this.cache = cf.create();
-  //
-  // runNServers(numServers);
-  // }
-  //
-  // private void runNServers(int n) throws InterruptedException {
-  // final int[] ports = 
AvailablePortHelper.getRandomAvailableTCPPorts(numServers);
-  // final Thread[] threads = new Thread[n];
-  // for (int i = 0; i < n; i++) {
-  // final int j = i;
-  // Runnable r = new Runnable() {
-  //
-  // @Override
-  // public void run() {
-  // GeodeRedisServiceImpl s = new GeodeRedisServiceImpl(ports[j]);
-  // s.start();
-  // s.stop();
-  // }
-  // };
-  //
-  // Thread t = new Thread(r);
-  // t.setDaemon(true);
-  // t.start();
-  // threads[i] = t;
-  // }
-  // for (Thread t : threads)
-  // t.join();
-  // this.cache = GemFireCacheImpl.getInstance();
-  // assertFalse(this.cache.isClosed());
-  // }
+      Thread t = new Thread(r);
+      t.setDaemon(true);
+      t.start();
+      threads[i] = t;
+    }
+    for (Thread t : threads)
+      t.join();
+    this.cache = GemFireCacheImpl.getInstance();
+    assertFalse(this.cache.isClosed());
+  }
 }

Reply via email to