Ejemplo n.º 1
0
        public void Rebuild_Change_Culture_Error()
        {
            using (var file = new TempFile())
                using (var db = new LiteDatabase(file.Filename))
                {
                    // remove string comparer ignore case
                    db.Rebuild(new RebuildOptions {
                        Collation = new Collation("en-US/None")
                    });

                    // insert 2 documents with different ID in case sensitive
                    db.GetCollection("col1").Insert(new BsonDocument[]
                    {
                        new BsonDocument {
                            ["_id"] = "ana"
                        },
                        new BsonDocument {
                            ["_id"] = "ANA"
                        }
                    });

                    // try migrate to ignorecase
                    this.Invoking(x =>
                    {
                        db.Rebuild(new RebuildOptions {
                            Collation = new Collation("en-US/IgnoreCase")
                        });
                    }).Should().Throw <LiteException>();

                    // test if current pragma still with collation none
                    db.Pragma("COLLATION").AsString.Should().Be("en-US/None");
                }
        }
Ejemplo n.º 2
0
        public NuGetService(ICacheProvider cacheProvider, ILogger logger)
        {
            if (cacheProvider == null)
            {
                throw new ArgumentNullException(nameof(cacheProvider));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _cache  = cacheProvider;
            _logger = logger;

            _db = new LiteDatabase($"Filename={_dbPath};Upgrade=true;");
            _db.Pragma("UTC_DATE", true);

            _packageSourceRepo = new EntityRepository <PackageSource>(_db, TimeSpan.FromDays(7));
            _favouriteRepo     = new EntityRepository <FavouritePackage>(_db, TimeSpan.MaxValue);
            _recentRepo        = new EntityRepository <RecentPackage>(_db, TimeSpan.MaxValue);

            _retryPolicy =
                Policy.Handle <WebException>()
                .Or <HttpRequestException>()
                .Or <TaskCanceledException>()
                .WaitAndRetryAsync
                (
                    retryCount: 2,
                    sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
                );
        }
Ejemplo n.º 3
0
        public async Task Transaction_Write_Lock_Timeout()
        {
            var data1 = DataGen.Person(1, 100).ToArray();
            var data2 = DataGen.Person(101, 200).ToArray();

            using (var db = new LiteDatabase("filename=:memory:"))
            {
                // small timeout
                db.Pragma(Pragmas.TIMEOUT, 1);

                var person = db.GetCollection <Person>();

                // init person collection with 100 document
                person.Insert(data1);

                var taskASemaphore = new SemaphoreSlim(0, 1);
                var taskBSemaphore = new SemaphoreSlim(0, 1);

                // task A will open transaction and will insert +100 documents
                // but will commit only 2s later
                var ta = Task.Run(() =>
                {
                    db.BeginTrans();

                    person.Insert(data2);

                    taskBSemaphore.Release();
                    taskASemaphore.Wait();

                    var count = person.Count();

                    count.Should().Be(data1.Length + data2.Length);

                    db.Commit();
                });

                // task B will try delete all documents but will be locked during 1 second
                var tb = Task.Run(() =>
                {
                    taskBSemaphore.Wait();

                    db.BeginTrans();
                    person
                    .Invoking(personCol => personCol.DeleteMany("1 = 1"))
                    .Should()
                    .Throw <LiteException>()
                    .Where(ex => ex.ErrorCode == LiteException.LOCK_TIMEOUT);

                    taskASemaphore.Release();
                });

                await Task.WhenAll(ta, tb);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Devuelve la información de idioma de la base de datos
        /// </summary>
        /// <returns></returns>
        public CultureInfo GetCultureInfoFromDB()
        {
            var         collation = LiteDatabase.Pragma(Pragmas.COLLATION);
            var         split     = ((string)collation.RawValue).Split('/');
            CultureInfo culture   = CultureInfo.InvariantCulture;

            if (split.Length == 2)
            {
                culture = new CultureInfo(split[0], false);
            }

            return(culture);
        }
Ejemplo n.º 5
0
        public static (int MinG, int MaxG, int MinR, int MaxR, int ProgressG, int ProgressR) GetMinMax(string _ID)
        {
            var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared");

            _db.Pragma("UTC_DATE", true);
            var col = _db.GetCollection <Classes.Playerinfo>("_" + _ID);

            col.EnsureIndex(x => x.timestampu);
            var _resultMinG = col.Min(x => x.rank);
            var _resultMinR = col.Min(x => x.countryRank);
            var _resultMaxG = col.Max(x => x.rank);
            var _resultMaxR = col.Max(x => x.countryRank);

            return(_resultMinG, _resultMaxG, _resultMinR, _resultMaxR,
                   _resultMinG - _resultMaxG, _resultMinR - _resultMaxR);
        }
Ejemplo n.º 6
0
        public static List <string> GetComparedFromDB()
        {
            var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared");

            _db.Pragma("UTC_DATE", true);
            var col = _db.GetCollection <Classes.Playerinfo>("profiles");

            col.EnsureIndex(x => x.playerId);
            var           results   = col.Find(x => x.compare);
            List <string> _compared = new List <string>();

            foreach (var item in results)
            {
                _compared.Add(item.playerId);
            }
            return(_compared);
        }
Ejemplo n.º 7
0
        public static void SaveProfiles()
        {
            var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared");

            _db.Pragma("UTC_DATE", true);
            var _timestampu = DateTime.UtcNow.Ticks;
            var _timestamp  = new DateTime(_timestampu).ToString();
            var col         = _db.GetCollection <Classes.Playerinfo>("profiles");

            col.EnsureIndex(x => x.playerId);
            foreach (var item in ScoreTrackerController.profileList)
            {
                item.timestamp  = _timestamp;
                item.timestampu = _timestampu.ToString();
                col.Upsert(item.playerId, item);
            }
            _db.Dispose();
        }
Ejemplo n.º 8
0
        public static List <Classes.Playerinfo> GetProfilesAsList()
        {
            var _db = new LiteDatabase("Filename = " + ScoreTrackerController.ScoreTrackerDB + "; connection = Shared");

            _db.Pragma("UTC_DATE", true);
            var col = _db.GetCollection <Classes.Playerinfo>("profiles");

            col.EnsureIndex(x => x.playerId);
            var results = col.FindAll();
            List <Classes.Playerinfo> _profileList = new List <Classes.Playerinfo>();

            foreach (var item in results)
            {
                _profileList.Add(item);
            }
            _db.Dispose();
            return(_profileList);
        }
Ejemplo n.º 9
0
        private void Init()
        {
            var connectionString = $"Filename={Path.Combine(this.DataDir, "DatabaseV3.db")};connection=shared";

            Db = new LiteDB.LiteDatabase(connectionString);
            Db.Pragma("UTC_DATE", true);


            DbSymbolsMetaData = Db.GetCollection <SymbolHistoryMetaDataInternal>("SymbolsMetaData");

            if (DbSymbolsMetaData.FindOne(e => true) == null)
            {
                Update1();
                Update2();
            }

            SymbolsMetaData = DbSymbolsMetaData.FindAll().ToDictionary(md => md.Id);
            ValidateSymbolsMetadata();
        }
Ejemplo n.º 10
0
        public void Execute()
        {
            if (_file.Delete)
            {
                this.DeleteFiles();
            }

            _db = new LiteDatabase(_file.Filename);
            _db.Pragma("TIMEOUT", (int)_file.Timeout.TotalSeconds);

            foreach (var setup in _file.Setup)
            {
                _db.Execute(setup);
            }

            // create all threads
            this.CreateThreads();

            // start report thread
            var t = new Thread(() => this.ReportThread());

            t.Name = "REPORT";
            t.Start();
        }
Ejemplo n.º 11
0
        public NuGetService(
            ICacheService cacheProvider,
            IHttpHandlerService httpHandlerService,
            IPreferences preferences,
            IVersionTracking versionTracking,
            IConnectivity connectivity,
            IFileSystem fileSystem,
            ILogger logger)
        {
            _cache  = cacheProvider ?? throw new ArgumentNullException(nameof(cacheProvider));
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));

            _preferences     = preferences;
            _versionTracking = versionTracking;
            _connectivity    = connectivity;

            _httpClient = new HttpClient(httpHandlerService.GetNativeHandler());

            var dbPath = Path.Combine(fileSystem.AppDataDirectory, "nugets.db");

            _db = new LiteDatabase($"Filename={dbPath};Upgrade=true;");
            _db.Pragma("UTC_DATE", true);

            _packageSourceRepo = new EntityRepository <PackageSource>(_db, TimeSpan.FromDays(7), _connectivity);
            _favouriteRepo     = new EntityRepository <FavouritePackage>(_db, TimeSpan.MaxValue, _connectivity);
            _recentRepo        = new EntityRepository <RecentPackage>(_db, TimeSpan.MaxValue, _connectivity);

            _retryPolicy =
                Policy.Handle <WebException>()
                .Or <HttpRequestException>()
                .WaitAndRetryAsync
                (
                    retryCount: 2,
                    sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))
                );
        }