1 21 22 package org.apache.derbyTesting.functionTests.util.corruptio; 23 import java.io.File ; 24 25 45 46 public class CorruptibleIo { 47 48 private static CorruptibleIo instance = new CorruptibleIo(); 49 private boolean corruptLog = false; private boolean corruptData = false; private int corruptLength; private int corruptOffset; 54 55 private CorruptibleIo() { 56 } 57 58 public static CorruptibleIo getInstance() { 59 return instance; 60 } 61 62 63 public void setLogCorruption(boolean corrupt) { 64 corruptLog = corrupt; 65 } 66 67 public void setDataCorruption(boolean corrupt) { 68 corruptData = corrupt; 69 } 70 71 public void setOffset(int off) { 72 corruptOffset = off ; 73 } 74 75 public void setLength(int len) { 76 corruptLength = len; 77 } 78 79 public int getOffset() { 80 return corruptOffset; 81 } 82 83 public int getLength(){ 84 return corruptLength; 85 } 86 87 public boolean isCorruptibleFile(File file) 88 { 89 String name = file.getName(); 90 String parentName = file.getParent(); 91 if (parentName.endsWith("log") && name.endsWith("dat")) { 92 return corruptLog; 93 } 94 else if (parentName.endsWith("seg0")) { 95 return corruptData; 96 } 97 98 return false; 99 } 100 101 105 public byte[] corrupt(byte b[], int off, int len) 106 { 107 if (corruptOffset >= off && (corruptOffset + corruptLength) < (off + len)) 108 { 109 for(int i = corruptOffset ; i < corruptOffset + corruptLength ; i++) 110 { 111 b[i] = (byte)~b[i]; 113 } 115 }else{ 117 System.out.println("Not valid corrupt request :" + 118 "Write Request" + "Off=" + off + "size = " + len + 119 "Corrupt Request" + "Off=" + corruptOffset + 120 "size = " + corruptLength); 121 } 122 return b; 123 } 124 125 } 126 | Popular Tags |