@@ -344,6 +344,7 @@ func TestVVObeyMou(t *testing.T) {
344344 DocsProcessed : 1 ,
345345 }, * stats )
346346
347+ fmt .Printf ("HONK HONK HONK\n " )
347348 mou := & db.MetadataOnlyUpdate {
348349 PreviousCAS : base .CasToString (fromCas1 ),
349350 PreviousRevSeqNo : db .RetrieveDocRevSeqNo (t , xattrs [base .VirtualXattrRevSeqNo ]),
@@ -383,119 +384,6 @@ func TestVVObeyMou(t *testing.T) {
383384 require .Equal (t , expectedVV , vv )
384385}
385386
386- func TestVVMouImport (t * testing.T ) {
387- base .SetUpTestLogging (t , base .LevelDebug , base .KeySGTest )
388- fromBucket , fromDs , toBucket , toDs := getTwoBucketDataStores (t )
389- ctx := base .TestCtx (t )
390- fromBucketSourceID , err := GetSourceID (ctx , fromBucket )
391- require .NoError (t , err )
392-
393- docID := "doc1"
394- ver1Body := `{"ver":1}`
395- fromCas1 , err := fromDs .WriteWithXattrs (ctx , docID , 0 , 0 , []byte (ver1Body ), map [string ][]byte {"ver1" : []byte (`{}` )}, nil ,
396- & sgbucket.MutateInOptions {
397- MacroExpansion : []sgbucket.MacroExpansionSpec {
398- sgbucket .NewMacroExpansionSpec ("ver1.cas" , sgbucket .MacroCas ),
399- },
400- })
401- require .NoError (t , err )
402-
403- xdcr := startXDCR (t , fromBucket , toBucket , XDCROptions {Mobile : MobileOn })
404- defer func () {
405- assert .NoError (t , xdcr .Stop (ctx ))
406- }()
407- requireWaitForXDCRDocsProcessed (t , xdcr , 1 )
408-
409- body , xattrs , destCas , err := toDs .GetWithXattrs (ctx , docID , []string {base .VvXattrName , base .MouXattrName , base .VirtualXattrRevSeqNo })
410- require .NoError (t , err )
411- require .Equal (t , fromCas1 , destCas )
412- require .JSONEq (t , ver1Body , string (body ))
413- require .NotContains (t , xattrs , base .MouXattrName )
414- require .Contains (t , xattrs , base .VvXattrName )
415- var vv db.HybridLogicalVector
416- require .NoError (t , base .JSONUnmarshal (xattrs [base .VvXattrName ], & vv ))
417- expectedVV := db.HybridLogicalVector {
418- CurrentVersionCAS : fromCas1 ,
419- SourceID : fromBucketSourceID ,
420- Version : fromCas1 ,
421- }
422-
423- require .Equal (t , expectedVV , vv )
424-
425- stats , err := xdcr .Stats (ctx )
426- assert .NoError (t , err )
427- require .Equal (t , Stats {
428- DocsWritten : 1 ,
429- DocsProcessed : 1 ,
430- }, * stats )
431-
432- mou := & db.MetadataOnlyUpdate {
433- CAS : "expand" ,
434- PreviousCAS : base .CasToString (fromCas1 ),
435- PreviousRevSeqNo : db .RetrieveDocRevSeqNo (t , xattrs [base .VirtualXattrRevSeqNo ]),
436- }
437-
438- opts := & sgbucket.MutateInOptions {
439- MacroExpansion : []sgbucket.MacroExpansionSpec {
440- sgbucket .NewMacroExpansionSpec (db .XattrMouCasPath (), sgbucket .MacroCas ),
441- sgbucket .NewMacroExpansionSpec ("ver2.cas" , sgbucket .MacroCas )},
442- }
443- fromCas2 , err := fromDs .UpdateXattrs (ctx , docID , 0 , fromCas1 , map [string ][]byte {
444- base .MouXattrName : base .MustJSONMarshal (t , mou ),
445- "ver2" : []byte (`{}` ),
446- }, opts )
447- require .NoError (t , err )
448- require .NotEqual (t , fromCas1 , fromCas2 )
449-
450- requireWaitForXDCRDocsProcessed (t , xdcr , 2 )
451- stats , err = xdcr .Stats (ctx )
452- assert .NoError (t , err )
453- require .Equal (t , Stats {
454- TargetNewerDocs : 1 ,
455- DocsWritten : 1 ,
456- DocsProcessed : 2 ,
457- }, * stats )
458-
459- ver3Body := `{"ver":3}`
460- fromCas3 , err := fromDs .WriteWithXattrs (ctx , docID , 0 , fromCas2 , []byte (ver3Body ), map [string ][]byte {"ver3" : []byte (`{}` )}, nil ,
461- & sgbucket.MutateInOptions {
462- MacroExpansion : []sgbucket.MacroExpansionSpec {
463- sgbucket .NewMacroExpansionSpec ("ver3.cas" , sgbucket .MacroCas ),
464- },
465- })
466- require .NoError (t , err )
467- requireWaitForXDCRDocsProcessed (t , xdcr , 3 )
468-
469- stats , err = xdcr .Stats (ctx )
470- assert .NoError (t , err )
471- require .Equal (t , Stats {
472- TargetNewerDocs : 1 ,
473- DocsWritten : 2 ,
474- DocsProcessed : 3 ,
475- }, * stats )
476-
477- body , xattrs , destCas , err = toDs .GetWithXattrs (ctx , docID , []string {base .VvXattrName , base .MouXattrName })
478- require .NoError (t , err )
479- require .Equal (t , fromCas3 , destCas )
480- require .JSONEq (t , ver3Body , string (body ))
481- require .Contains (t , xattrs , base .VvXattrName )
482- vv = db.HybridLogicalVector {}
483- require .NoError (t , base .JSONUnmarshal (xattrs [base .VvXattrName ], & vv ))
484- fmt .Printf ("fromCas=%d, fromCas2=%d, fromCas3=%d\n " , fromCas1 , fromCas2 , fromCas3 )
485- require .Equal (t , db.HybridLogicalVector {
486- CurrentVersionCAS : fromCas3 ,
487- SourceID : fromBucketSourceID ,
488- Version : fromCas3 }, vv )
489- require .Contains (t , xattrs , base .MouXattrName )
490- var actualMou * db.MetadataOnlyUpdate
491- require .NoError (t , base .JSONUnmarshal (xattrs [base .MouXattrName ], & actualMou ))
492- require .Equal (t , db.MetadataOnlyUpdate {
493- PreviousCAS : mou .PreviousCAS },
494- * actualMou ) // this doesn't seem right in xdcr
495-
496- require .False (t , true )
497- }
498-
499387func TestLWWAfterInitialReplication (t * testing.T ) {
500388 fromBucket , fromDs , toBucket , toDs := getTwoBucketDataStores (t )
501389 ctx := base .TestCtx (t )
0 commit comments