diff --git a/reporter/internal/pdata/generate.go b/reporter/internal/pdata/generate.go index ade8e20a1..bb23f0f87 100644 --- a/reporter/internal/pdata/generate.go +++ b/reporter/internal/pdata/generate.go @@ -31,6 +31,11 @@ func (p *Pdata) Generate(events map[libpf.Origin]samples.KeyToEventMapping) ppro sp := rp.ScopeProfiles().AppendEmpty() for _, origin := range []libpf.Origin{support.TraceOriginSampling, support.TraceOriginOffCPU} { + if len(events[origin]) == 0 { + // Do not append empty profiles, if there + // is not profiling data for this origin. + continue + } prof := sp.Profiles().AppendEmpty() prof.SetProfileID(pprofile.ProfileID(mkProfileID())) p.setProfile(origin, events[origin], prof) diff --git a/reporter/internal/pdata/generate_test.go b/reporter/internal/pdata/generate_test.go index cd5067eae..e7f60ee85 100644 --- a/reporter/internal/pdata/generate_test.go +++ b/reporter/internal/pdata/generate_test.go @@ -257,9 +257,15 @@ func TestFunctionTableOrder(t *testing.T) { d.Executables.Add(k, v) } res := d.Generate(tt.events) + expectedProfiles := len(tt.events) require.Equal(t, 1, res.ResourceProfiles().Len()) require.Equal(t, 1, res.ResourceProfiles().At(0).ScopeProfiles().Len()) - require.Equal(t, 2, res.ResourceProfiles().At(0).ScopeProfiles().At(0).Profiles().Len()) + require.Equal(t, expectedProfiles, res.ResourceProfiles(). + At(0).ScopeProfiles(). + At(0).Profiles().Len()) + if expectedProfiles == 0 { + return + } p := res.ResourceProfiles().At(0).ScopeProfiles().At(0).Profiles().At(0) require.Equal(t, len(tt.wantFunctionTable), p.FunctionTable().Len()) for i := 0; i < p.FunctionTable().Len(); i++ {