15db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge/* 25db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * Copyright (C) 2015 The Android Open Source Project 35db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * 45db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * Licensed under the Apache License, Version 2.0 (the "License"); 55db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * you may not use this file except in compliance with the License. 65db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * You may obtain a copy of the License at 75db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * 85db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * http://www.apache.org/licenses/LICENSE-2.0 95db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * 105db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * Unless required by applicable law or agreed to in writing, software 115db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * distributed under the License is distributed on an "AS IS" BASIS, 125db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * See the License for the specific language governing permissions and 145db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge * limitations under the License 155db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge */ 165db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 175db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargepackage com.android.server.job; 185db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 195db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargeimport android.annotation.TargetApi; 205db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargeimport android.app.job.JobParameters; 215db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargeimport android.app.job.JobService; 225db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargeimport android.util.Log; 235db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 245db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargeimport java.util.ArrayList; 255db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 265db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge@TargetApi(24) 275db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basargepublic class MockPriorityJobService extends JobService { 285db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge private static final String TAG = "MockPriorityJobService"; 295db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 305db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge @Override 315db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public void onCreate() { 325db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge super.onCreate(); 335db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Log.e(TAG, "Created test service."); 345db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 355db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 365db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge @Override 375db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public boolean onStartJob(JobParameters params) { 385db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Log.i(TAG, "Test job executing: " + params.getJobId()); 395db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge TestEnvironment.getTestEnvironment().executedEvents.add( 405db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge new TestEnvironment.Event(TestEnvironment.EVENT_START_JOB, params.getJobId())); 415db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return true; // Job not finished 425db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 435db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 445db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge @Override 455db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public boolean onStopJob(JobParameters params) { 465db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Log.i(TAG, "Test job stop executing: " + params.getJobId()); 475db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge int reason = params.getStopReason(); 485db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge int event = TestEnvironment.EVENT_STOP_JOB; 495db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Log.d(TAG, "stop reason: " + String.valueOf(reason)); 505db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge if (reason == JobParameters.REASON_PREEMPT) { 515db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge event = TestEnvironment.EVENT_PREEMPT_JOB; 525db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Log.d(TAG, "preempted " + String.valueOf(params.getJobId())); 535db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 545db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge TestEnvironment.getTestEnvironment().executedEvents 555db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge .add(new TestEnvironment.Event(event, params.getJobId())); 565db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return false; // Do not reschedule 575db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 585db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 595db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static class TestEnvironment { 605db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 615db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int EVENT_START_JOB = 0; 625db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int EVENT_PREEMPT_JOB = 1; 635db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static final int EVENT_STOP_JOB = 2; 645db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 655db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge private static TestEnvironment kTestEnvironment; 665db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 675db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge private ArrayList<Event> executedEvents = new ArrayList<Event>(); 685db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 695db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static TestEnvironment getTestEnvironment() { 705db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge if (kTestEnvironment == null) { 715db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge kTestEnvironment = new TestEnvironment(); 725db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 735db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return kTestEnvironment; 745db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 755db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 765db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public static class Event { 775db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public int event; 785db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public int jobId; 795db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 805db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public Event() { 815db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 825db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 835db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public Event(int event, int jobId) { 845db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge this.event = event; 855db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge this.jobId = jobId; 865db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 875db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 885db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge @Override 895db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public boolean equals(Object other) { 905db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge if (other instanceof Event) { 915db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge Event otherEvent = (Event) other; 925db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return otherEvent.event == event && otherEvent.jobId == jobId; 935db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 945db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return false; 955db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 965db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 975db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 985db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public void setUp() { 995db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge executedEvents.clear(); 1005db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 1015db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge 1025db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge public ArrayList<Event> getExecutedEvents() { 1035db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge return executedEvents; 1045db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 1055db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge } 1065db09084c8e4efc6311754243c39962fc8e7a766Shreyas Basarge} 107