Reputation: 573
Im having Trouble setting up an in memory database using RavenDB.
The error I get is: I get is: SetUp : System.MissingMethodException : Method not found: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject(Byte[])'
Full Error Trace:
SetUp : System.MissingMethodException :
Method not found: 'Raven.Json.Linq.RavenJObject Raven.Abstractions.Extensions.JsonExtensions.ToJObject(Byte[])'.
at Raven.Storage.Managed.DocumentsStorageActions.DeleteDocument(String key, Nullable1 etag, ref RavenJObject metadata)
at Raven.Database.DocumentDatabase.<>c__DisplayClass4e.<Delete>b__48(IStorageActionsAccessor actions)
in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 518
at Raven.Storage.Managed.TransactionalStorage.Batch(Action1 action)
in c:\Builds\raven\Raven.Storage.Managed\TransactionalStorage.cs: line 112
at Raven.Database.DocumentDatabase.Delete(String key, Nullable`1 etag, TransactionInformation transactionInformation)
in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 509
at Raven.Database.Backup.RemoveBackupDocumentStartupTask.Execute(DocumentDatabase database)
in c:\Builds\raven\Raven.Database\Backup\RemoveBackupDocumentStartupTask.cs: line 17
at Raven.Database.DocumentDatabase.ExecuteStartupTasks()
in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 214
at Raven.Database.DocumentDatabase..ctor(InMemoryRavenConfiguration configuration)
in c:\Builds\raven\Raven.Database\DocumentDatabase.cs: line 173
at Raven.Client.Embedded.EmbeddableDocumentStore.InitializeInternal()
at Raven.Client.Document.DocumentStore.Initialize()
in c:\Builds\raven\Raven.Client.Lightweight\Document\DocumentStore.cs: line 484
at Aqueduct.Dashboard.Web.Tests.RavenInMemoryDatabase.InMemoryDatabase.DocumentStore()
in InMemoryDatabase.cs: line 27
at Aqueduct.Dashboard.Web.Tests.MonitoringServiceTests.Setup()
in MonitoringServiceTests.cs: line 24
My InMemory db is defined below:
public EmbeddableDocumentStore DocumentStore()
{
string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(InMemoryDatabase)).CodeBase);
path = Path.Combine(path, "testing").Substring(6);
var documentStore = new EmbeddableDocumentStore()
{
Configuration =
{
DataDirectory = path,
RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true,
DefaultStorageTypeName = "munin",
RunInMemory = true
}
};
documentStore.Initialize();
new RavenDocumentsByEntityName().Execute(documentStore);
return documentStore;
}
My Test is:
[TestFixture]
public class MonitoringServiceTests
{
private IMonitoringService m_monitoringService;
private PerformanceRepository m_performanceRepository;
private InMemoryDatabase m_inMemoryDatabase;
[TestFixtureSetUp]
public void Setup()
{
m_inMemoryDatabase = new InMemoryDatabase();
m_performanceRepository = new PerformanceRepository(m_inMemoryDatabase.DocumentStore().OpenSession());
m_monitoringService = new MonitoringService(m_performanceRepository);
}
[Test]
public void RecordSnapShot_RecordsCpuUsage()
{
m_monitoringService.RecordSnapShot();
var allMeasurements = m_performanceRepository.GetAll();
Assert.IsTrue(allMeasurements.Where(x => x.MeasurementType == MeasurementType.ProcessorUsage).Count() == 1);
}
}
Upvotes: 3
Views: 1058
Reputation: 22956
You probably have mixed versions of the ravendb dlls, that is the only thing that can cause this error
Upvotes: 3
Reputation: 6839
Change the creation of the documentStore
to the following and see if that works:
var documentStore = new EmbeddableDocumentStore { RunInMemory = true }
As far as I see you're doing some really weird stuff when creating your store. Why do you want to supply a path when you want to run in memory? Even if, the path can be relative and something simple as "Data".
Check out ravens source code to see (hopefully) many working tests using in-memory storage.
Upvotes: 0