17d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui/*
27d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * Copyright (C) 2015 The Android Open Source Project
37d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui *
47d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * Licensed under the Apache License, Version 2.0 (the "License");
57d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * you may not use this file except in compliance with the License.
67d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * You may obtain a copy of the License at
77d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui *
87d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui *      http://www.apache.org/licenses/LICENSE-2.0
97d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui *
107d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * Unless required by applicable law or agreed to in writing, software
117d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * distributed under the License is distributed on an "AS IS" BASIS,
127d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * See the License for the specific language governing permissions and
147d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui * limitations under the License.
157d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui */
167d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui
177d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cuistatic void CheckMmapRecordDataEqual(const MmapRecord& r1, const MmapRecord& r2) {
187d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(0, memcmp(&r1.data, &r2.data, sizeof(r1.data)));
197d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(r1.filename, r2.filename);
207d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui}
217d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui
227d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cuistatic void CheckCommRecordDataEqual(const CommRecord& r1, const CommRecord& r2) {
237d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(0, memcmp(&r1.data, &r2.data, sizeof(r1.data)));
247d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(r1.comm, r2.comm);
257d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui}
267d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui
278f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cuistatic void CheckBuildIdRecordDataEqual(const BuildIdRecord& r1, const BuildIdRecord& r2) {
288f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui  ASSERT_EQ(r1.pid, r2.pid);
298f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui  ASSERT_EQ(r1.build_id, r2.build_id);
308f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui  ASSERT_EQ(r1.filename, r2.filename);
318f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui}
328f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui
337d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cuistatic void CheckRecordEqual(const Record& r1, const Record& r2) {
347d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(0, memcmp(&r1.header, &r2.header, sizeof(r1.header)));
357d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  ASSERT_EQ(0, memcmp(&r1.sample_id, &r2.sample_id, sizeof(r1.sample_id)));
367d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  if (r1.header.type == PERF_RECORD_MMAP) {
377d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui    CheckMmapRecordDataEqual(static_cast<const MmapRecord&>(r1), static_cast<const MmapRecord&>(r2));
387d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  } else if (r1.header.type == PERF_RECORD_COMM) {
397d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui    CheckCommRecordDataEqual(static_cast<const CommRecord&>(r1), static_cast<const CommRecord&>(r2));
408f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui  } else if (r1.header.type == PERF_RECORD_BUILD_ID) {
418f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui    CheckBuildIdRecordDataEqual(static_cast<const BuildIdRecord&>(r1),
428f6225147c5b6cb2159a7f5cb0dab952ee0759dfYabin Cui                                static_cast<const BuildIdRecord&>(r2));
437d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui  }
447d59bb49fb47fbc82ef5c77d7aebf7174fd996e1Yabin Cui}
45