1*105f6285SAndroid Build Coastguard Worker// Copyright 2020 Google LLC 2*105f6285SAndroid Build Coastguard Worker// 3*105f6285SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*105f6285SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*105f6285SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*105f6285SAndroid Build Coastguard Worker// 7*105f6285SAndroid Build Coastguard Worker// https://www.apache.org/licenses/LICENSE-2.0 8*105f6285SAndroid Build Coastguard Worker// 9*105f6285SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*105f6285SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*105f6285SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*105f6285SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*105f6285SAndroid Build Coastguard Worker// limitations under the License. 14*105f6285SAndroid Build Coastguard Worker 15*105f6285SAndroid Build Coastguard Workerpackage mount 16*105f6285SAndroid Build Coastguard Worker 17*105f6285SAndroid Build Coastguard Workerimport ( 18*105f6285SAndroid Build Coastguard Worker "fmt" 19*105f6285SAndroid Build Coastguard Worker) 20*105f6285SAndroid Build Coastguard Worker 21*105f6285SAndroid Build Coastguard Workertype MountEntry struct { 22*105f6285SAndroid Build Coastguard Worker Source string 23*105f6285SAndroid Build Coastguard Worker FSType string 24*105f6285SAndroid Build Coastguard Worker Flags uintptr 25*105f6285SAndroid Build Coastguard Worker Data string 26*105f6285SAndroid Build Coastguard Worker} 27*105f6285SAndroid Build Coastguard Worker 28*105f6285SAndroid Build Coastguard Workertype fakeMounter struct { 29*105f6285SAndroid Build Coastguard Worker mountMap map[string]MountEntry //keyed by target 30*105f6285SAndroid Build Coastguard Worker} 31*105f6285SAndroid Build Coastguard Worker 32*105f6285SAndroid Build Coastguard Workerfunc NewFakeMounter() *fakeMounter { 33*105f6285SAndroid Build Coastguard Worker var f fakeMounter 34*105f6285SAndroid Build Coastguard Worker f.mountMap = make(map[string]MountEntry) 35*105f6285SAndroid Build Coastguard Worker return &f 36*105f6285SAndroid Build Coastguard Worker} 37*105f6285SAndroid Build Coastguard Worker 38*105f6285SAndroid Build Coastguard Workerfunc (f *fakeMounter) Mount(source string, target string, fstype string, flags uintptr, data string) error { 39*105f6285SAndroid Build Coastguard Worker //Using the target as the key prevents more 40*105f6285SAndroid Build Coastguard Worker //than one source mapping to the same target 41*105f6285SAndroid Build Coastguard Worker f.mountMap[target] = MountEntry{ 42*105f6285SAndroid Build Coastguard Worker Source: source, 43*105f6285SAndroid Build Coastguard Worker FSType: fstype, 44*105f6285SAndroid Build Coastguard Worker Flags: flags, 45*105f6285SAndroid Build Coastguard Worker Data: data, 46*105f6285SAndroid Build Coastguard Worker } 47*105f6285SAndroid Build Coastguard Worker return nil 48*105f6285SAndroid Build Coastguard Worker} 49*105f6285SAndroid Build Coastguard Worker 50*105f6285SAndroid Build Coastguard Workerfunc (f *fakeMounter) Unmount(target string, flags int) error { 51*105f6285SAndroid Build Coastguard Worker _, ok := f.mountMap[target] 52*105f6285SAndroid Build Coastguard Worker if !ok { 53*105f6285SAndroid Build Coastguard Worker return fmt.Errorf("Mount %s not found", target) 54*105f6285SAndroid Build Coastguard Worker } 55*105f6285SAndroid Build Coastguard Worker delete(f.mountMap, target) 56*105f6285SAndroid Build Coastguard Worker return nil 57*105f6285SAndroid Build Coastguard Worker} 58*105f6285SAndroid Build Coastguard Worker 59*105f6285SAndroid Build Coastguard Workerfunc (f *fakeMounter) List() ([]string, error) { 60*105f6285SAndroid Build Coastguard Worker var list []string 61*105f6285SAndroid Build Coastguard Worker for target, _ := range f.mountMap { 62*105f6285SAndroid Build Coastguard Worker list = append(list, target) 63*105f6285SAndroid Build Coastguard Worker } 64*105f6285SAndroid Build Coastguard Worker 65*105f6285SAndroid Build Coastguard Worker return list, nil 66*105f6285SAndroid Build Coastguard Worker} 67