Bogdan Caprita | 78b6216 | 2014-08-21 15:35:08 -0700 | [diff] [blame] | 1 | package impl |
| 2 | |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 3 | import ( |
Robert Kroeger | 362ff89 | 2014-09-29 14:23:47 -0700 | [diff] [blame] | 4 | "flag" |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 5 | "os" |
| 6 | "path/filepath" |
| 7 | |
Bogdan Caprita | 54ae80e | 2015-01-20 13:37:52 -0800 | [diff] [blame] | 8 | "v.io/core/veyron2/services/mgmt/device" |
Jiri Simsa | 764efb7 | 2014-12-25 20:57:03 -0800 | [diff] [blame] | 9 | "v.io/core/veyron2/vlog" |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 10 | ) |
| 11 | |
Bogdan Caprita | 78b6216 | 2014-08-21 15:35:08 -0700 | [diff] [blame] | 12 | // This file contains code in the impl package that we only want built for tests |
| 13 | // (it exposes public API methods that we don't want to normally expose). |
| 14 | |
Robert Kroeger | 362ff89 | 2014-09-29 14:23:47 -0700 | [diff] [blame] | 15 | var mockIsSetuid = flag.Bool("mocksetuid", false, "set flag to pretend to have a helper with setuid permissions") |
| 16 | |
Bogdan Caprita | 78b6216 | 2014-08-21 15:35:08 -0700 | [diff] [blame] | 17 | func (c *callbackState) leaking() bool { |
| 18 | c.Lock() |
| 19 | defer c.Unlock() |
| 20 | return len(c.channels) > 0 |
| 21 | } |
| 22 | |
| 23 | func (d *dispatcher) Leaking() bool { |
| 24 | return d.internal.callback.leaking() |
| 25 | } |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 26 | |
| 27 | func init() { |
Robert Kroeger | 94ec756 | 2014-10-28 17:58:44 -0700 | [diff] [blame] | 28 | cleanupDir = func(dir, helper string) { |
Bogdan Caprita | c2777ee | 2014-11-18 23:00:02 -0800 | [diff] [blame] | 29 | if dir == "" { |
| 30 | return |
| 31 | } |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 32 | parentDir, base := filepath.Dir(dir), filepath.Base(dir) |
Robert Kroeger | 94ec756 | 2014-10-28 17:58:44 -0700 | [diff] [blame] | 33 | var renamed string |
| 34 | if helper != "" { |
| 35 | renamed = filepath.Join(parentDir, "helper_deleted_"+base) |
| 36 | } else { |
| 37 | renamed = filepath.Join(parentDir, "deleted_"+base) |
| 38 | } |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 39 | if err := os.Rename(dir, renamed); err != nil { |
| 40 | vlog.Errorf("Rename(%v, %v) failed: %v", dir, renamed, err) |
| 41 | } |
| 42 | } |
Robert Kroeger | 362ff89 | 2014-09-29 14:23:47 -0700 | [diff] [blame] | 43 | isSetuid = possiblyMockIsSetuid |
Bogdan Caprita | 54ae80e | 2015-01-20 13:37:52 -0800 | [diff] [blame] | 44 | |
Robin Thellend | 753de65 | 2015-01-26 13:50:56 -0800 | [diff] [blame^] | 45 | Describe = func() (descr device.Description, err error) { |
Bogdan Caprita | 54ae80e | 2015-01-20 13:37:52 -0800 | [diff] [blame] | 46 | return device.Description{Profiles: map[string]struct{}{"test-profile": struct{}{}}}, nil |
| 47 | } |
Robert Kroeger | 362ff89 | 2014-09-29 14:23:47 -0700 | [diff] [blame] | 48 | } |
| 49 | |
| 50 | func possiblyMockIsSetuid(fileStat os.FileInfo) bool { |
| 51 | vlog.VI(2).Infof("Mock isSetuid is reporting: %v", *mockIsSetuid) |
| 52 | return *mockIsSetuid |
Bogdan Caprita | 9d285a1 | 2014-09-30 15:04:16 -0700 | [diff] [blame] | 53 | } |
Robert Kroeger | 94ec756 | 2014-10-28 17:58:44 -0700 | [diff] [blame] | 54 | |
| 55 | func WrapBaseCleanupDir(path, helper string) { |
| 56 | baseCleanupDir(path, helper) |
| 57 | } |