Example #1
0
func (p *pstoreHandlerType) Visit(
	theStore *store.Store, endpointId interface{}) error {

	hostName := endpointId.(*collector.Endpoint).HostName()
	port := endpointId.(*collector.Endpoint).Port()
	appName := p.appList.ByPort(port).Name()
	iterator, timeLeft := p.namedIterator(theStore, endpointId)
	if p.maybeNilCoord != nil {
		// aMetricStore from the consumer exposes the same filtering that
		// the consumer does internally.
		aMetricStore := p.ConsumerMetricsStore()
		// Even though the consumer filters out the records it can't write,
		// we have to do the same filtering here so that we get an accurate
		// count of skipped records with timestamps coming before the start
		// of our lease.
		iterator = store.NamedIteratorFilter(iterator, aMetricStore)
		// RemoveFromRecordCount removes skipped records from the total
		// count of records to write.
		iterator = store.NamedIteratorCoordinate(
			iterator,
			p.maybeNilCoord,
			kLeaseSpan,
			aMetricStore.RemoveFromRecordCount)
	}
	p.consumer.Write(iterator, hostName, appName)
	p.visitorMetricsStore.MaybeIncreaseTimeLeft(
		duration.FromFloat(timeLeft))
	return nil
}
Example #2
0
func TestCoordinate(t *testing.T) {
	var iter store.NamedIterator = &fakeTsIterator{
		Current: 200.0,
		End:     500.0,
		Incr:    10.0,
	}
	coord := &fakeCoordinator{}
	var skipped uint64
	updateSkipped := func(x uint64) {
		skipped += x
	}
	// Leases go up in 30 second increments
	iter = store.NamedIteratorCoordinate(iter, coord, 30.0, updateSkipped)
	runIteration(t, iter, 200.0, 210.0, 220.0)
	// Verify we are on 1st lease and it goes from 0 to 230
	coord.Verify(t, 1, 0.0, 230.0)
	runIteration(t, iter, 230.0, 240.0, 250.0, 260.0)
	// Verify we are on 3rd lease and it goes from 0 to 290
	coord.Verify(t, 3, 0.0, 290.0)
	iter.Commit()
	if skipped != 0 {
		t.Errorf("Expected 0 skipped, got %d", skipped)
	}
	coord.SetNextStart(340.0)
	// Even though we are on new start, current lease is still valid.
	runIteration(t, iter, 270.0, 280.0)
	coord.Verify(t, 3, 0.0, 290.0)
	// Now we jump to 340
	runIteration(t, iter, 340.0)
	// skip isn't updated until after we commit
	if skipped != 0 {
		t.Errorf("Expected 0 skipped, got %d", skipped)
	}
	iter.Commit()
	if skipped != 5 {
		t.Errorf("Expected 5 skipped, got %d", skipped)
	}
	// 4th lease goes from 340 to 370
	coord.Verify(t, 4, 340.0, 370.0)
	runIteration(t, iter, 350.0, 360.0, 370.0)
	// 5th lease runs to 400
	coord.Verify(t, 5, 340.0, 400.0)
	coord.SetNextStart(600.0)
	runIteration(t, iter, 380.0, 390)
	coord.Verify(t, 5, 340.0, 400.0)
	var rec store.Record
	if iter.Next(&rec) {
		t.Error("Exected no more, but got some")
	}
	coord.Verify(t, 6, 600.0, 630.0)
	// Skip not updated until after we commit
	if skipped != 5 {
		t.Errorf("Expected 5 skipped, got %d", skipped)
	}
	iter.Commit()
	// Our iterator goes to 500 so we skipped last 10 making total skipped
	// be 15.
	if skipped != 15 {
		t.Errorf("Expected 15 skipped, got %d", skipped)
	}
}