static void Main(string[] args) { Boolean mounted = false; Logger.UsuallyDebugging = false; Logger.setLogger(null); try { Logger.getLogger().log(AssemblyHelper.About(System.Reflection.Assembly.GetExecutingAssembly())); if (args.Length < 3) { Logger.getLogger().log("Usage: ChunkFS <mountpoint> <chunksize> <sourcefile>..."); return; } CFSDriveConfig cfg = new CFSDriveConfig("CmdLineDrive", args[0], args[1], args, 2); ChunkFSDriver theDrive = new ChunkFSDriver(cfg); if (theDrive.Init()) { Logger.getLogger().log("drive will be mounted now, to unmount hit <CTRL>C"); mounted = true; theDrive.exec(); } else { Logger.getLogger().log("Init() failed, drive not mounted"); } } catch (Exception ex) { mounted = false; Logger.getLogger().log("failed, exception:" + ex.Message + ex.StackTrace); } finally { if (mounted) { Logger.getLogger().log("drive unmounted"); } } }
static void Main(string[] args) { Boolean mounted = false; Logger.UsuallyDebugging = false; Logger.setLogger(null); try { Logger.getLogger().log(AssemblyHelper.About(System.Reflection.Assembly.GetExecutingAssembly())); if (args.Length < 3) { Logger.getLogger().log("Usage: ChunkFS <mountpoint> <chunksize> <sourcefile>..."); return; } CFSDriveConfig cfg = new CFSDriveConfig("CmdLineDrive", args[0], args[1], args, 2); ChunkFSDriver theDrive = new ChunkFSDriver(cfg); if (theDrive.Init()) { Logger.getLogger().log("drive will be mounted now, to unmount hit <CTRL>C"); mounted = true; theDrive.exec(); } else { Logger.getLogger().log("Init() failed, drive not mounted"); } } catch (Exception ex) { mounted = false; Logger.getLogger().log("failed, exception:" + ex.Message + ex.StackTrace); } finally { if (mounted) Logger.getLogger().log("drive unmounted"); } }
public static void MyClassInitialize(TestContext testContext) { CFSDriveConfig config = new CFSDriveConfig("test", args[0], args[1], args, 2); target = new ChunkFSDriver(config); //bool ok = target.Init(args[1], args[2]); bool ok = target.Init(); }
public void ReadFileTest2() { bool remember = Logger.UsuallyDebugging; Logger.UsuallyDebugging = true; Logger.setLogger(null); int kperchunk = 640; string infn = TestDataHelper.locateTestText(); string mount = "k:\\"; string csize = "640K"; string[] files = { mount, csize, infn }; CFSDriveConfig cfg = new CFSDriveConfig(null, mount, csize, files, 2); ChunkFSDriver cfs = new ChunkFSDriver(cfg); cfs.Init(); Assert.IsTrue(cfs.Count() > 0); uint readBytes = 64 * 1024; uint readBytesExpected = readBytes; byte[] buffer = new byte[readBytes]; string filename = infn.Substring(infn.LastIndexOf("\\") + 1); FileInfo fi = new FileInfo(infn); long actualsize = fi.Length; string outDir = fi.DirectoryName + "\\out\\"; int bytesperchunk = kperchunk * 1024; int chunksExpected = (int)((actualsize + (long)bytesperchunk - 1L) / (long)bytesperchunk); long offset = 0; DokanFileInfo info = new DokanFileInfo(0); FileInformation finf = new FileInformation(); int ok; for (int i = 0; i < chunksExpected; i++) { // get file info and note the size string uniq = fi.LastWriteTime.ToString("yyyyMMddHHmm", CultureInfo.InvariantCulture); string currfn = filename + "." + uniq + "." + (i + 1) + "." + chunksExpected; ok = cfs.GetFileInformation(currfn, finf, info); long currcs = finf.Length; // open the file, create an output file ok = cfs.CreateFile(currfn, FileAccess.Read, FileShare.Read, FileMode.Open, FileOptions.None, info); FileStream ofs = new FileStream(outDir + currfn, FileMode.Create, FileAccess.Write); // read all the bytes and write to output offset = 0; do { ok = cfs.ReadFile(currfn, buffer, ref readBytes, offset, info); ofs.Write(buffer, 0, (int)readBytes); offset += readBytes; } while (offset + 1 < currcs); // close the input and output ok = cfs.Cleanup(currfn, info); ok = cfs.CloseFile(currfn, info); string ofn = ofs.Name; ofs.Close(); new FileInfo(ofn).LastWriteTime = finf.LastWriteTime; } // now you can compare the files TODO //int expected = 0; //int actual; //actual = cfs.ReadFile(filename, buffer, ref readBytes, offset, info); //Assert.AreEqual(readBytesExpected, readBytes); //Assert.AreEqual(expected, actual); //Assert.Inconclusive("Verify the correctness of this test method."); Logger.UsuallyDebugging = remember; Logger.setLogger(null); }
public void InitTest() { CFSDriveConfig config = new CFSDriveConfig("test", args[0], args[1], args, 2); //bool ok = target.Init(args[1], args[2]); ChunkFSDriver target = new ChunkFSDriver(config); bool ok = target.Init(); Assert.IsTrue(ok); }
private void pbMount_Click(object sender, EventArgs e) { try { int ix = this.dgConfigs.CurrentCell.RowIndex; CFSDriveConfig dc = this.myDrives[ix]; if (!dc.isValid()) { MessageBox.Show(this, "Drive config is not valid", "Error", MessageBoxButtons.OK); return; } ChunkFSDriver theDrive = new ChunkFSDriver(dc); if (theDrive.Init()) { //MessageBox.Show("drive will be mounted now, to unmount hit <CTRL>C"); Thread t = new Thread(new ThreadStart(theDrive.exec2)); t.Start(); dc.Mounted = true; dc.RunningDriver = theDrive; myDrives.ResetBindings(); manageGuiState(dc); } else { MessageBox.Show("Init() failed, drive not mounted"); } } catch (Exception ex) { MessageBox.Show(this, ex.Message + ex.StackTrace, "Mount Failed", MessageBoxButtons.OK); } finally { //manageGuiState(); } }