blob: d8e344b4bec9162255bb373fd41683dcfb964e6a [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.car.test;
import android.car.annotation.FutureFeature;
import android.car.vms.VmsLayer;
import android.car.vms.VmsLayerDependency;
import android.car.vms.VmsLayersOffering;
import android.car.vms.VmsPublisherClientService;
import android.car.vms.VmsSubscriptionState;
import android.util.Log;
import java.util.List;
import java.util.ArrayList;
/**
* This service is launched during the tests in VmsPublisherSubscriberTest. It publishes a property
* that is going to be verified in the test.
*
* Note that the subscriber can subscribe before the publisher finishes initialization. To cover
* both potential scenarios, this service publishes the test message in onVmsSubscriptionChange
* and in onVmsPublisherServiceReady. See comments below.
*/
@FutureFeature
public class VmsPublisherClientMockService extends VmsPublisherClientService {
private static final String TAG = "VmsPublisherClientMockService";
@Override
public void onVmsSubscriptionChange(VmsSubscriptionState subscriptionState) {
// Case when the publisher finished initialization before the subscription request.
initializeMockPublisher(subscriptionState);
}
@Override
public void onVmsPublisherServiceReady() {
// Case when the subscription request was sent before the publisher was ready.
VmsSubscriptionState subscriptionState = getSubscriptions();
initializeMockPublisher(subscriptionState);
}
private void initializeMockPublisher(VmsSubscriptionState subscriptionState) {
Log.d(TAG, "Initializing Mock publisher");
getPublisherStaticId(VmsPublisherSubscriberTest.PAYLOAD);
publishIfNeeded(subscriptionState);
declareOffering(subscriptionState);
}
private void publishIfNeeded(VmsSubscriptionState subscriptionState) {
for (VmsLayer layer : subscriptionState.getLayers()) {
if (layer.equals(VmsPublisherSubscriberTest.LAYER)) {
publish(VmsPublisherSubscriberTest.LAYER, VmsPublisherSubscriberTest.PAYLOAD);
}
}
}
private void declareOffering(VmsSubscriptionState subscriptionState) {
List<VmsLayerDependency> dependencies = new ArrayList<>();
for( VmsLayer layer : subscriptionState.getLayers()) {
dependencies.add(new VmsLayerDependency(layer));
}
VmsLayersOffering offering = new VmsLayersOffering(dependencies);
setLayersOffering(offering);
}
}