150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi/* 250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * Copyright (C) 2016 The Android Open Source Project 350a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * 450a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * Licensed under the Apache License, Version 2.0 (the "License"); 550a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * you may not use this file except in compliance with the License. 650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * You may obtain a copy of the License at 750a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * 850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * http://www.apache.org/licenses/LICENSE-2.0 950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * 1050a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * Unless required by applicable law or agreed to in writing, software 1150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * distributed under the License is distributed on an "AS IS" BASIS, 1250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1350a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * See the License for the specific language governing permissions and 1450a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi * limitations under the License. 1550a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi */ 1650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 1750a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichipackage com.android.server.connectivity; 1850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 1950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichiimport android.net.ConnectivityMetricsEvent; 2050a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichiimport android.os.Bundle; 2150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichiimport android.os.Parcel; 2250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichiimport android.os.Parcelable; 2350a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 2495cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichiimport java.util.function.Consumer; 2595cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi 2650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichiabstract public class MetricsTestUtil { 2750a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi private MetricsTestUtil() { 2850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 2950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 3095cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static ConnectivityMetricsEvent ev(Parcelable p) { 31ec27c4d9f33615be1f94d6bb5c5fd1358580ac05Hugo Benichi ConnectivityMetricsEvent ev = new ConnectivityMetricsEvent(); 32ec27c4d9f33615be1f94d6bb5c5fd1358580ac05Hugo Benichi ev.timestamp = 1L; 33ec27c4d9f33615be1f94d6bb5c5fd1358580ac05Hugo Benichi ev.data = p; 34ec27c4d9f33615be1f94d6bb5c5fd1358580ac05Hugo Benichi return ev; 3550a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 3650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 3795cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static ConnectivityMetricsEvent describeIpEvent(Consumer<Parcel>... fs) { 3850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi Parcel p = Parcel.obtain(); 3995cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi for (Consumer<Parcel> f : fs) { 4095cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi f.accept(p); 4150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 4250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi p.setDataPosition(0); 4395cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return ev(p.readParcelable(ClassLoader.getSystemClassLoader())); 4450a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 4550a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 4695cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aType(Class<?> c) { 4795cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return aString(c.getName()); 4850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 4950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 5095cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aBool(boolean b) { 5150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi return aByte((byte) (b ? 1 : 0)); 5250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 5350a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 5495cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aByte(byte b) { 5595cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeByte(b); 5650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 5750a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 5895cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> anInt(int i) { 5995cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeInt(i); 6050a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 6150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 6295cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aLong(long l) { 6395cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeLong(l); 6450a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 6550a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 6695cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aString(String s) { 6795cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeString(s); 6850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 6950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 7095cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> aByteArray(byte... ary) { 7195cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeByteArray(ary); 7250a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 7350a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 7495cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi static Consumer<Parcel> anIntArray(int... ary) { 7595cb226c1a4ff47531da65ef2617ade0dea5c9b8Hugo Benichi return (p) -> p.writeIntArray(ary); 7650a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 7750a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi 7850a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi static byte b(int i) { 7950a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi return (byte) i; 8050a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi } 8150a84c6210f4f165b489dd1bf1c535d86dda2fbaHugo Benichi} 82