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);


Reply via email to