Author: toad
Date: 2008-03-19 16:06:29 +0000 (Wed, 19 Mar 2008)
New Revision: 18606
Modified:
trunk/freenet/src/freenet/keys/ClientKeyBlock.java
trunk/freenet/src/freenet/keys/ClientSSKBlock.java
trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
Log:
Alternate SSKs and CHKs in RealNodeRequestInsertTest.
Modified: trunk/freenet/src/freenet/keys/ClientKeyBlock.java
===================================================================
--- trunk/freenet/src/freenet/keys/ClientKeyBlock.java 2008-03-19 15:57:57 UTC
(rev 18605)
+++ trunk/freenet/src/freenet/keys/ClientKeyBlock.java 2008-03-19 16:06:29 UTC
(rev 18606)
@@ -25,5 +25,7 @@
* @return The ClientKey for this key.
*/
public ClientKey getClientKey();
+
+ public byte[] memoryDecode() throws KeyDecodeException;
}
Modified: trunk/freenet/src/freenet/keys/ClientSSKBlock.java
===================================================================
--- trunk/freenet/src/freenet/keys/ClientSSKBlock.java 2008-03-19 15:57:57 UTC
(rev 18605)
+++ trunk/freenet/src/freenet/keys/ClientSSKBlock.java 2008-03-19 16:06:29 UTC
(rev 18606)
@@ -11,6 +11,8 @@
import freenet.support.Logger;
import freenet.support.api.Bucket;
import freenet.support.api.BucketFactory;
+import freenet.support.io.ArrayBucket;
+import freenet.support.io.ArrayBucketFactory;
import freenet.support.io.BucketTools;
public class ClientSSKBlock extends SSKBlock implements ClientKeyBlock {
@@ -107,5 +109,18 @@
public short getCompressionCodec() {
return compressionAlgorithm;
}
+
+ /**
+ * Decode into RAM, if short.
+ * @throws KeyDecodeException
+ */
+ public byte[] memoryDecode() throws KeyDecodeException {
+ try {
+ ArrayBucket a = (ArrayBucket) decode(new
ArrayBucketFactory(), 32*1024, false);
+ return BucketTools.toByteArray(a); // FIXME
+ } catch (IOException e) {
+ throw new Error(e);
+ }
+ }
}
Modified:
trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
2008-03-19 15:57:57 UTC (rev 18605)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
2008-03-19 16:06:29 UTC (rev 18606)
@@ -11,20 +11,22 @@
import freenet.io.comm.PeerParseException;
import freenet.io.comm.ReferenceSignatureVerificationException;
import freenet.keys.CHKEncodeException;
-import freenet.keys.ClientCHK;
import freenet.keys.ClientCHKBlock;
+import freenet.keys.ClientKSK;
import freenet.keys.ClientKey;
+import freenet.keys.ClientKeyBlock;
+import freenet.keys.FreenetURI;
+import freenet.keys.InsertableClientSSK;
import freenet.node.FSParseException;
import freenet.node.Node;
import freenet.node.NodeInitException;
import freenet.node.NodeStarter;
import freenet.support.Executor;
-import freenet.support.Fields;
-import freenet.support.HexUtil;
import freenet.support.Logger;
import freenet.support.PooledExecutor;
import freenet.support.StringArray;
import freenet.support.LoggerHook.InvalidThresholdException;
+import freenet.support.io.ArrayBucket;
import freenet.support.io.FileUtil;
import freenet.support.math.RunningAverage;
import freenet.support.math.SimpleRunningAverage;
@@ -109,22 +111,41 @@
// Pick random node to insert to
int node1 = random.nextInt(NUMBER_OF_NODES);
Node randomNode = nodes[node1];
- Logger.error(RealNodeRequestInsertTest.class,"Inserting:
\""+dataString+"\" to "+node1);
+ //Logger.error(RealNodeRequestInsertTest.class,"Inserting:
\""+dataString+"\" to "+node1);
+
+ boolean isSSK = requestNumber % 2 == 1;
+
+ FreenetURI testKey;
+ ClientKey insertKey;
+ ClientKey fetchKey;
+ ClientKeyBlock block;
+
+ byte[] buf = dataString.getBytes("UTF-8");
+ if(isSSK) {
+ testKey = new FreenetURI("KSK", dataString);
+
+ insertKey = InsertableClientSSK.create(testKey);
+ fetchKey = ClientKSK.create(testKey);
+
+ block = ((InsertableClientSSK)insertKey).encode(new
ArrayBucket(buf), false, false, (short)-1, buf.length, random);
+ } else {
+ block = ClientCHKBlock.encode(buf, false, false,
(short)-1, buf.length);
+ insertKey = fetchKey = block.getClientKey();
+ testKey = insertKey.getURI();
+ }
+
+ System.err.println();
+ System.err.println("Created random test key "+testKey+" =
"+fetchKey.getNodeKey());
+ System.err.println();
+
byte[] data = dataString.getBytes("UTF-8");
- ClientCHKBlock block;
- block = ClientCHKBlock.encode(data, false, false, (short)-1,
0);
- ClientCHK chk = (ClientCHK) block.getClientKey();
- byte[] encData = block.getData();
- byte[] encHeaders = block.getHeaders();
- ClientCHKBlock newBlock = new ClientCHKBlock(encData,
encHeaders, chk, true);
- Logger.minor(RealNodeRequestInsertTest.class, "Decoded: "+new
String(newBlock.memoryDecode()));
- Logger.normal(RealNodeRequestInsertTest.class,"CHK:
"+chk.getURI());
- Logger.minor(RealNodeRequestInsertTest.class,"Headers:
"+HexUtil.bytesToHex(block.getHeaders()));
+ Logger.minor(RealNodeRequestInsertTest.class, "Decoded: "+new
String(block.memoryDecode()));
+ Logger.normal(RealNodeRequestInsertTest.class,"Insert Key:
"+insertKey.getURI());
+ Logger.normal(RealNodeRequestInsertTest.class,"Fetch Key:
"+fetchKey.getURI());
try {
insertAttempts++;
randomNode.clientCore.realPut(block,
true);
Logger.error(RealNodeRequestInsertTest.class, "Inserted to "+node1);
-
Logger.minor(RealNodeRequestInsertTest.class, "Data:
"+Fields.hashCode(encData)+", Headers: "+Fields.hashCode(encHeaders));
insertSuccesses++;
} catch (freenet.node.LowLevelPutException
putEx) {
Logger.error(RealNodeRequestInsertTest.class, "Insert failed: "+ putEx);
@@ -137,7 +158,7 @@
node2 = random.nextInt(NUMBER_OF_NODES);
} while(node2 == node1);
Node fetchNode = nodes[node2];
- block = (ClientCHKBlock)
fetchNode.clientCore.realGetKey((ClientKey) chk, false, true, false);
+ block = (ClientCHKBlock)
fetchNode.clientCore.realGetKey(fetchKey, false, true, false);
if(block == null) {
int
percentSuccess=100*fetchSuccesses/insertAttempts;
Logger.error(RealNodeRequestInsertTest.class, "Fetch
#"+requestNumber+" FAILED ("+percentSuccess+"%); from "+node2);