/*
* Copyright 2014 Alexey Plotnik
*
* 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.stem;
import org.junit.Before;
import org.junit.Ignore;
@Ignore
public class StreamingTest extends IntegrationTestBase {
private int portIndex = 1;
@Override
protected String getStorageNodeConfigPath() {
return "../stem-storagenode/src/test/resources/stem.small_ff.yaml";
}
@Override
@Before
public void setUp() throws Exception {
super.setUp();
}
// @Test
// public void test() throws Exception {
// clusterManagerClient.computeMapping(); // first version of CRUSHmap
// client.start();
// List<byte[]> keysGenerated = generateStaticLoad(300);
// debugKeysPositions(keysGenerated, "initial");
// //joinPseudoNode(); // TODO: there we should wait for the real node
// waitForExternalStorageNode("localhost:10000");
// Layout layout = Layout.getInstance();
// clusterManagerClient.computeMapping(); // second version of CRUSHmap
// Thread.sleep(5000);
// debugKeysPositions(keysGenerated, "after rebalancing");
// CompactionManager.instance.performMajorCompaction();
// debugKeysPositions(keysGenerated, "after compaction");
//
// checkDataAvailability(keysGenerated);
// }
//
// private void checkDataAvailability(List<byte[]> keysGenerated) {
// int i = 1;
// int broken = 0;
// List<ExtendedBlobDescriptor> brokenDescriptors = new ArrayList<ExtendedBlobDescriptor>();
// for (byte[] keyOrig : keysGenerated) {
// String endpoint = client.getFirstEndpointForKey(keyOrig);
// ExtendedBlobDescriptor descriptor = client.getFirstDescriptorForKey(keyOrig);
// byte[] data = client.get(keyOrig);
// byte[] keyActual = DigestUtils.md5(data);
//
// if (keyActual[0] != keyOrig[0]) {
// broken++;
// brokenDescriptors.add(descriptor);
// }
//
// Assert.assertArrayEquals(String.format("blob #%s[%s] (%s) located on %s is corrupted", i++, data.length, Hex.encodeHexString(keyOrig), endpoint), keyActual, keyOrig);
// }
//// for (ExtendedBlobDescriptor d : brokenDescriptors)
//// {
//// System.out.println("0x"+Hex.encodeHexString(d.getKey()) + " is broken");
//// }
// }
//
// private void debugKeysPositions(List<byte[]> keysGenerated, String prefix) {
// for (byte[] key : keysGenerated) {
// String endpoint = client.getFirstEndpointForKey(key);
// ExtendedBlobDescriptor descriptor = client.getFirstDescriptorForKey(key);
// System.out.println(String.format("%s 0x%s, disk=%s, ff=%s, offset=%s, size=%s",
// prefix,
// Hex.encodeHexString(key),
// descriptor.getDisk(),
// descriptor.getFFIndex(),
// descriptor.getBodyOffset(),
// descriptor.getLength()));
// }
// }
//
// private void waitForExternalStorageNode(String endpoint) throws Exception {
// StorageNodeClient client = new StorageNodeClient(endpoint);
// while (true) {
// try {
// client.start();
// break;
// } catch (IOException e) {
// System.out.println(String.format("Node %s has not started yet", endpoint));
// Thread.sleep(100);
// }
// }
// }
//
// private void joinPseudoNode() throws ZooException {
// List<InetAddress> ipAddresses = Utils.getIpAddresses();
// Map<UUID, MountPoint> mountPoints = new HashMap<UUID, MountPoint>();
// UUID uuid = UUID.randomUUID();
// mountPoints.put(
// uuid,
// new MountPoint(uuid, "/tmp/mp", (10l * 1024 * 1024 * 1024), new DataTracker(getvBucketsNum()))
// );
//
//
// JoinRequest req = new JoinRequest();
// REST.StorageNode node = req.getNode();
// node.setListen(StorageNodeDescriptor.getNodeListenAddress(), StorageNodeDescriptor.getNodeListenPort() + portIndex++);
//
// for (InetAddress ipAddress : ipAddresses) {
// node.getIpAddresses().add(ipAddress.toString());
// }
//
// for (MountPoint mp : mountPoints.values()) {
// REST.Disk disk = new REST.Disk(
// mp.getId(),
// mp.getPath(),
// mp.getTotalSizeInBytes(),
// mp.getAllocatedSizeInBytes());
// node.getDisks().add(disk);
// }
//
// clusterManagerClient.join(req, ZookeeperFactoryCached.newClient("localhost:2180"));
// }
}