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