public void ExistingFilesAreNotOverwritten()
        {
            _sut.Dispose();

            Directory.CreateDirectory(Path.Combine(_root, "a"));
            var metaFile = Path.Combine(_root, @"a\.zipfolder");
            var zip0     = Path.Combine(_root, @"a\0.zip");
            var zip1     = Path.Combine(_root, @"a\1.zip");

            // setup fake data from previous run
            File.WriteAllText(metaFile, "test");
            using (var testZip = new WritingArchive(zip0))
            {
                testZip.Add("test");
            }

            // new initialization
            _sut = new ZipFolderLRUCache <string>(_root, 2);
            var a = _sut.GetArchive("a");

            a.Add("x");
            _sut.Dispose();

            Assert.True(File.Exists(metaFile));
            Assert.True(File.Exists(zip0));
            Assert.True(File.Exists(zip1));

            Assert.AreEqual("test", File.ReadAllText(metaFile));
            AssertZipContent(zip0, "test");
            AssertZipContent(zip1, "x");
        }
        public void ComplexKeysArePossibleThoughNotRecommended()
        {
            var sut = new ZipFolderLRUCache <List <string> >(_root, 2);
            var key = new List <string> {
                "a", "b"
            };

            sut.GetArchive(key);
            sut.Dispose();

            var metaFile = Path.Combine(_root, "[a,b]\\.zipfolder");
            var actual   = File.ReadAllText(metaFile);
            var expected = key.ToFormattedJson();

            Assert.AreEqual(expected, actual);
        }
Exemple #3
0
 public void OpenCache()
 {
     _cache = new ZipFolderLRUCache <CoReTypeName>(_dirHistories, 1000);
 }
 public void SetUp()
 {
     _root = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
     Directory.CreateDirectory(_root);
     _sut = new ZipFolderLRUCache <string>(_root, 2);
 }
        public void Run()
        {
            var startTime = DateTime.Now;
            var ctxZips   = FindInputFiles();

            var numZips    = ctxZips.Count();
            var currentZip = 1;

            var numTotalCtxs   = 0;
            var numTotalUsages = 0;

            using (var cache = new ZipFolderLRUCache <CoReTypeName>(_dirOut, 1000))
            {
                foreach (var fileName in ctxZips)
                {
                    try
                    {
                        Log("### processing zip {0}/{1}: {2}", currentZip++, numZips, fileName);

                        var numLocalCtxs   = 0;
                        var numLocalUsages = 0;

                        var fullFileIn = _dirIn + fileName;

                        using (var ra = new ReadingArchive(fullFileIn))
                        {
                            Log("reading contexts...");
                            var ctxs    = ra.GetAll <Context>();
                            var numCtxs = ctxs.Count;
                            Log("found {0} contexts, exporting usages...\n\n", numCtxs);

                            var colCounter = 0;
                            foreach (var ctx in ctxs)
                            {
                                if (colCounter == 25)
                                {
                                    Console.WriteLine();
                                    colCounter = 0;
                                }
                                colCounter++;

                                var usages = ExtractUsages(ctx);
                                var msg    = usages.Count == 0
                                    ? "."
                                    : string.Format("{0}", usages.Count);
                                Console.Write(msg.PadLeft(5));

                                foreach (var u in usages)
                                {
                                    cache.GetArchive(u.type).Add(u);
                                }

                                numLocalCtxs++;
                                numLocalUsages += usages.Count;
                            }
                        }
                        Append("\n");
                        Log(
                            "--> {0} contexts, {1} usages\n\n",
                            numLocalCtxs,
                            numLocalUsages);

                        numTotalCtxs   += numLocalCtxs;
                        numTotalUsages += numLocalUsages;
                    }
                    catch (Exception e)
                    {
                        Log("oops, something went wrong...\n{0}", e);
                    }
                }
            }

            Log("finished! (started at {0})", startTime);
            Log(
                "found a total of {0} contexts and extracted {1} usages\n\n",
                numTotalCtxs,
                numTotalUsages);
        }