public void TestStringKey()
        {
            const string id    = "TheKey";
            var          grain = host.GrainFactory.GetGrain <ICouchBaseStorageGrainWithStringKey>(id);

            var result = GrainKeyHelper.KeyMatches(grain, id);

            Assert.True(result);
        }
        public void TestIntegerKey()
        {
            const int id    = 100;
            var       grain = host.GrainFactory.GetGrain <ICouchBaseStorageGrainWithIntegerKey>(id);

            var result = GrainKeyHelper.KeyMatches(grain, id.ToString());

            Assert.True(result);
        }
        public void TestGuidKey()
        {
            var id    = Guid.NewGuid();
            var grain = host.GrainFactory.GetGrain <ICouchBaseStorageGrain>(id);

            var result = GrainKeyHelper.KeyMatches(grain, id.ToString());

            Assert.True(result);
        }
        /// <summary>
        /// Writes the persisted state from a grain state object into its backing store.
        /// </summary>
        /// <param name="grainType">A string holding the name of the grain class.</param>
        /// <param name="grainReference">Represents the long-lived identity of the grain.</param>
        /// <param name="grainState">A reference to an object holding the persisted state of the grain.</param>
        /// <returns>Completion promise for this operation.</returns>
        public async Task WriteStateAsync(string grainType, GrainReference grainReference, IGrainState grainState)
        {
            if (DataManager == null)
            {
                throw new ArgumentException("DataManager property not initialized");
            }

            var grainTypeName = grainType.Split('.').Last();
            //Serialize the data
            var entityData = ConvertToStorageFormat(grainState);
            //Get the ETag to send to the DB
            var eTag         = grainState.ETag;
            var returnedEtag = await DataManager.Write(grainTypeName, grainReference.ToKeyString(), entityData, eTag, GrainKeyHelper.GetPrimaryKeyAsString(grainReference));

            //Set the new ETag on the state object.
            grainState.ETag = returnedEtag;
        }