public void fresh_readable_checkpoint_returns_zero()
 {
     using (var check = FileEventPointer.OpenOrCreateForReading(FileName))
     {
         Assert.AreEqual(0, check.Read());
     }
 }
 public void readonly_checkpoint_throws()
 {
     using (var check = FileEventPointer.OpenOrCreateForReading(FileName))
     {
         check.Write(long.MaxValue);
     }
 }
 public void writeable_checkpoint_writes_expected_value()
 {
     using (var check = FileEventPointer.OpenOrCreateForWriting(FileName))
     {
         check.Write(long.MaxValue);
         Assert.AreEqual(check.Read(), long.MaxValue);
     }
 }
예제 #4
0
        public bool Execute(CommandProcessorContext context, CancellationToken token, string[] args)
        {
            // [abdullin]: we don't need checkpoint write flood (multi-threads)
            // since there is only one writer by default
            int repeat = 10000;

            if (args.Length > 0)
            {
                int.TryParse(args[0], out repeat);
            }

            const string            checkpointName = "epfl.chk";
            AzureStoreConfiguration configuration;
            var location = context.Client.Options.StoreLocation;

            if (AzureStoreConfiguration.TryParse(location, out configuration))
            {
                var container = CloudStorageAccount.Parse(configuration.ConnectionString)
                                .CreateCloudBlobClient()
                                .GetContainerReference(configuration.RootBlobContainerName);

                container.CreateIfNotExist();
                var blob = container.GetPageBlobReference(checkpointName);
                blob.Create(512);
                try
                {
                    using (var pointer = new TestAzurePointer(blob))
                    {
                        TestPointer(context, pointer, repeat, "page");
                    }
                    using (var pointer = AzureEventPointer.OpenWriteable(blob))
                    {
                        TestPointer(context, pointer, repeat, "meta");
                    }
                }
                finally
                {
                    blob.DeleteIfExists();
                }
            }
            else
            {
                var fullName = Path.Combine(location, checkpointName);

                try
                {
                    using (var openOrCreateForWriting = FileEventPointer.OpenOrCreateForWriting(fullName))
                    {
                        TestPointer(context, openOrCreateForWriting, repeat, "file");
                    }
                }
                finally
                {
                    File.Delete(fullName);
                }
            }
            return(true);
        }