Get() public method

public Get ( string key, Raven.Abstractions.Data.TransactionInformation transactionInformation ) : JsonDocument
key string
transactionInformation Raven.Abstractions.Data.TransactionInformation
return JsonDocument
		public void AfterIncrementalBackupRestoreCanReadDocument()
		{
			db.Put("ayende", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), new RavenJObject(), null);

			db.StartBackup(BackupDir, false, new DatabaseDocument());
			WaitForBackup(db, true);

			db.Put("itamar", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), new RavenJObject(), null);
			db.StartBackup(BackupDir, true, new DatabaseDocument());
			WaitForBackup(db, true);

			db.Dispose();
			IOExtensions.DeleteDirectory(DataDir);

			DocumentDatabase.Restore(new RavenConfiguration
			{
				Settings =
				{
					{"Raven/Esent/CircularLog", "false"}
				}

			}, BackupDir, DataDir, s => { });

			db = new DocumentDatabase(new RavenConfiguration { DataDirectory = DataDir });

			var jObject = db.Get("ayende", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
			jObject = db.Get("itamar", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
		}
        public void Execute(DocumentDatabase database)
        {
            _database = database;

            var configDoc = _database.Get(ClocksConfig.Id, null);
            if (configDoc == null)
                return;

            var config = configDoc.DataAsJson.JsonDeserialization<ClocksConfig>();
            Configure(config);
        }
Esempio n. 3
0
		public void AfterBackupRestoreCanReadDocument()
		{
			db.Put("ayende", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), new RavenJObject(), null);

			db.StartBackup(BackupDir, false, new DatabaseDocument());
			WaitForBackup(db, true);

			db.Dispose();
			IOExtensions.DeleteDirectory(DataDir);

			DocumentDatabase.Restore(new RavenConfiguration(), BackupDir, DataDir, s => { }, defrag: true);

			db = new DocumentDatabase(new RavenConfiguration {DataDirectory = DataDir});

			var jObject = db.Get("ayende", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
		}
Esempio n. 4
0
		public void AfterBackupRestoreCanReadDocument()
		{
			db.Put("ayende", null, JObject.Parse("{'email':'*****@*****.**'}"), new JObject(), null);

			db.StartBackup("raven.db.test.backup");
			WaitForBackup();

			db.Dispose();

            DeleteIfExists("raven.db.test.esent");

			DocumentDatabase.Restore(new RavenConfiguration(), "raven.db.test.backup", "raven.db.test.esent");

			db = new DocumentDatabase(new RavenConfiguration { DataDirectory = "raven.db.test.esent"});

			var jObject = db.Get("ayende", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
		}
Esempio n. 5
0
		public bool Authenticate(DocumentDatabase currentStore, string username, string password, out AccessTokenBody.DatabaseAccess[] allowedDatabases)
		{
			allowedDatabases = new AccessTokenBody.DatabaseAccess[0];

			var jsonDocument = currentStore.Get("Raven/Users/" + username, null);
			if (jsonDocument == null)
			{
				return false;
			}
			var user = jsonDocument.DataAsJson.JsonDeserialization<AuthenticationUser>();

			var validatePassword = user.ValidatePassword(password);
			if (!validatePassword)
				return false;

			var dbs = Enumerable.Empty<AccessTokenBody.DatabaseAccess>();
			if (user.AllowedDatabases != null)
			{
				var accesses = user.AllowedDatabases.Select(tenantId => new AccessTokenBody.DatabaseAccess
				{
					TenantId = tenantId,
					Admin = user.Admin,
					ReadOnly = false
				});
				dbs = dbs.Concat(accesses);
			}

			if (user.Databases != null)
			{
				var accesses = user.Databases.Select(x => new AccessTokenBody.DatabaseAccess
				{
					Admin = user.Admin | x.Admin,
					ReadOnly = x.ReadOnly,
					TenantId = x.Name
				});
				dbs = dbs.Concat(accesses);
			}

			allowedDatabases = dbs.ToArray();

			return true;
		}
		protected void WaitForBackup(DocumentDatabase db, bool checkError)
		{
			while (true)
			{
				var jsonDocument = db.Get(BackupStatus.RavenBackupStatusDocumentKey, null);
				if (jsonDocument == null)
					break;
				var backupStatus = jsonDocument.DataAsJson.JsonDeserialization<BackupStatus>();
				if (backupStatus.IsRunning == false)
				{
					if (checkError)
					{
						var firstOrDefault = backupStatus.Messages.FirstOrDefault(x => x.Severity == BackupStatus.BackupMessageSeverity.Error);
						if (firstOrDefault != null)
							Assert.False(true, firstOrDefault.Message);
					}

					return;
				}
				Thread.Sleep(50);
			}
		}
		/// <summary>
		/// Uses an encrypted document to verify that the encryption key is correct and decodes it to the right value.
		/// </summary>
		public static void VerifyEncryptionKey(DocumentDatabase database, EncryptionSettings settings)
		{
			JsonDocument doc;
			try
			{
				doc = database.Get(Constants.InDatabaseKeyVerificationDocumentName, null);
			}
			catch (CryptographicException e)
			{
				throw new ConfigurationErrorsException("The database is encrypted with a different key and/or algorithm than the ones "
					+ "currently in the configuration file.", e);
			}

			if (doc != null)
			{
				var ravenJTokenEqualityComparer = new RavenJTokenEqualityComparer();
				if (!ravenJTokenEqualityComparer.Equals(doc.DataAsJson,Constants.InDatabaseKeyVerificationDocumentContents))
					throw new ConfigurationErrorsException("The database is encrypted with a different key and/or algorithm than the ones "
						+ "currently in the configuration file.");
			}
			else
			{
				// This is the first time the database is loaded.
				if (EncryptedDocumentsExist(database))
					throw new InvalidOperationException("The database already has existing documents, you cannot start using encryption now.");

				database.Put(Constants.InDatabaseKeyVerificationDocumentName, null, Constants.InDatabaseKeyVerificationDocumentContents, new RavenJObject(), null);
			}
		}
Esempio n. 8
0
		protected void WaitForBackup(DocumentDatabase db, bool checkError)
		{
			WaitForBackup(key => db.Get(key, null), checkError);
		}
		public void AfterIncrementalBackupRestoreCanReadDocument()
		{
			DeleteIfExists("raven.db.test.backup"); // for full backups, we can't have anything in the target dir

			db.Put("ayende", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), new RavenJObject(), null);

			db.StartBackup("raven.db.test.backup", false);
			WaitForBackup(true);

			db.Put("itamar", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), new RavenJObject(), null);
			db.StartBackup("raven.db.test.backup", true);
			WaitForBackup(true);

			db.Dispose();

			DeleteIfExists("raven.db.test.esent");

			DocumentDatabase.Restore(new RavenConfiguration
			{
				Settings =
					{
						{"Raven/Esent/CircularLog", "false"}
					}

			}, "raven.db.test.backup", "raven.db.test.esent");

			db = new DocumentDatabase(new RavenConfiguration { DataDirectory = "raven.db.test.esent" });

			var jObject = db.Get("ayende", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
			jObject = db.Get("itamar", null).ToJson();
			Assert.Equal("*****@*****.**", jObject.Value<string>("email"));
		}
Esempio n. 10
0
		protected void WaitForBackup(DocumentDatabase db, bool checkError)
		{
			var done = SpinWait.SpinUntil(() =>
			{
				var jsonDocument = db.Get(BackupStatus.RavenBackupStatusDocumentKey, null);
				if (jsonDocument == null)
					return true;

				var backupStatus = jsonDocument.DataAsJson.JsonDeserialization<BackupStatus>();
				if (backupStatus.IsRunning == false)
				{
					if (checkError)
					{
						var firstOrDefault =
							backupStatus.Messages.FirstOrDefault(x => x.Severity == BackupStatus.BackupMessageSeverity.Error);
						if (firstOrDefault != null)
							Assert.False(true, firstOrDefault.Message);
					}

					return true;
				}
				return false;
			}, TimeSpan.FromMinutes(15));
			Assert.True(done);
		}