func (me *MockContentSource) FetchNewsArticles(startTime unixtime.Time, endTime unixtime.Time) []server.NewsArticle { articlesPerMin := 200 + rand.Intn(400) logger.Printf("Exporting docs from %v to %v", startTime, endTime) articlesPerSec := articlesPerMin / 60 timeWindow := endTime.Time().Sub(startTime.Time()) numArticlesToFetch := articlesPerSec * int(timeWindow/time.Second) logger.Printf("articlesPerMin=%v, timeWindow=%v => generating %v fake news articles", articlesPerMin, timeWindow, numArticlesToFetch) newsArticles := make([]server.NewsArticle, 0, numArticlesToFetch) for i := 0; i < numArticlesToFetch; i++ { doc := makeFakeDocument(me.nextDocumentId(), startTime, endTime) // Create some fake people numPersonsPerDoc := 0 + rnd.Intn(20) persons := make([]server.Entity, 0, numPersonsPerDoc) for j := 0; j < numPersonsPerDoc; j++ { persons = append(persons, fakePersons[rnd.Intn(len(fakePersons))]) } // Create some fake orgs numOrgsPerDoc := 0 + rnd.Intn(20) orgs := make([]server.Entity, 0, numOrgsPerDoc) for j := 0; j < numOrgsPerDoc; j++ { orgs = append(orgs, fakeOrgs[rnd.Intn(len(fakeOrgs))]) } // Create some fake places numPlacesPerDoc := 0 + rnd.Intn(20) places := make([]server.Entity, 0, numPlacesPerDoc) for j := 0; j < numPlacesPerDoc; j++ { places = append(places, fakePlaces[rnd.Intn(len(fakePlaces))]) } newsArticle := server.NewsArticle{Document: doc, Persons: persons, Orgs: orgs, Places: places} newsArticles = append(newsArticles, newsArticle) } return newsArticles }
func makeFakeDocument(docId int, startTime unixtime.Time, endTime unixtime.Time) server.Document { fakeNewsSources := []string{"The Onion", "NYTimes", "Wired.com", "SciCentral", "Reuters", "BBC News"} // Returns a UnixTime object that falls within the specified time endpoints (inclusive). randomTimeBetween := func(startTime unixtime.Time, endTime unixtime.Time) unixtime.Time { timeDiff := endTime.Time().Unix() - startTime.Time().Unix() + 1 randomUnixTime := int32(startTime.Time().Unix() + rnd.Int63n(timeDiff)) return unixtime.Unix(randomUnixTime) } return server.Document{ Id: docId, Headline: fmt.Sprintf("Document %v", docId), InsertDate: randomTimeBetween(startTime, endTime), Source: fakeNewsSources[rnd.Intn(len(fakeNewsSources))], Url: fmt.Sprintf("http://www.example.com/fake-document/%v", docId), } }