func TestCollectionExistsAndStats(t *testing.T) { database, err := setup() if err != nil { t.Fatalf("error connecting to database with error: %v", err) } defer database.Session.Close() testColl := "testStats" colSize := 8192 coll, err := mgoStreamingCollection.CreateOrConvertCollection(database, testColl, colSize) if err != nil { t.Errorf("error creating collection with error: %v", err) } exists, err := mgoStreamingCollection.CollectionExists(database, testColl) if err != nil { t.Errorf("error checking collection existence with error: %v", err) } if !exists { t.Errorf("collection %s does not exist", testColl) } stats, err := mgoStreamingCollection.Stats(coll) if err != nil { t.Errorf("error getting collection stats with error: %v", err) } if !stats.Capped { t.Errorf("collection %s not capped", testColl) } if stats.MaxBytes != colSize { t.Log(stats.MaxBytes) t.Errorf("collection %s size not set %d", testColl, colSize) } }
func TestTailQuery(t *testing.T) { database, err := setup() if err != nil { t.Fatalf("error connecting to database with error: %v", err) } defer database.Session.Close() collectionName := "testTailQuery" collectionSize := 1024 if exists, _ := mgoStreamingCollection.CollectionExists(database, collectionName); exists { database.C(collectionName).DropCollection() } cappedCollection, err := mgoStreamingCollection.CreateOrConvertCollection(database, collectionName, collectionSize) if err != nil { t.Errorf("collection creation failed with error: %v", err) } ch := make(chan interface{}) go mgoStreamingCollection.TailQuery(cappedCollection.Find(nil), ch) for i := 0; i < 3; i++ { cappedCollection.Insert(bson.M{"name": "husayn", "count": i}) for msg := range ch { if msg != nil { t.Log(msg) break } t.Errorf("inserted document not read with cound %d", i) } } close(ch) }