EMMA Coverage Report (generated Mon Aug 23 17:21:34 CEST 2010)
[all classes][diskCacheV111.poolManager]

COVERAGE SUMMARY FOR SOURCE FILE [PartitionManager.java]

nameclass, %method, %block, %line, %
PartitionManager.java100% (2/2)39%  (15/38)28%  (480/1693)28%  (94.2/335)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class PartitionManager100% (1/1)37%  (11/30)28%  (450/1634)27%  (87.7/322)
ac_pm_create_$_1 (Args): String 0%   (0/1)0%   (0/34)0%   (0/5)
ac_pm_destroy_$_1 (Args): String 0%   (0/1)0%   (0/40)0%   (0/8)
ac_pm_ls_$_0_1 (Args): String 0%   (0/1)0%   (0/102)0%   (0/16)
ac_pm_set_$_0_1 (Args): String 0%   (0/1)0%   (0/51)0%   (0/8)
ac_pmx_get_map (Args): Object 0%   (0/1)0%   (0/3)0%   (0/1)
dumpCostOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/13)0%   (0/3)
dumpInfo (PrintWriter, PartitionManager$Info): void 0%   (0/1)0%   (0/89)0%   (0/17)
dumpLegacyDefaultInfo (PrintWriter, PartitionManager$Info): void 0%   (0/1)0%   (0/32)0%   (0/9)
dumpMiscOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/7)0%   (0/2)
dumpP2pDefaultOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/55)0%   (0/10)
dumpP2pOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/33)0%   (0/6)
dumpStageOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/23)0%   (0/5)
dumpThresholdOptions (PrintWriter, PoolManagerParameter): void 0%   (0/1)0%   (0/31)0%   (0/6)
getInfoPartitionByName (String): PartitionManager$Info 0%   (0/1)0%   (0/6)0%   (0/1)
getParameterCopyOf (): PoolManagerParameter 0%   (0/1)0%   (0/7)0%   (0/1)
getParameterCopyOf (String): PoolManagerParameter 0%   (0/1)0%   (0/26)0%   (0/5)
getParameterMap (): Map 0%   (0/1)0%   (0/29)0%   (0/4)
printParameterSet (StringBuffer, PoolManagerParameter): void 0%   (0/1)0%   (0/157)0%   (0/14)
printSetup (PrintWriter): void 0%   (0/1)0%   (0/52)0%   (0/10)
scanParameter (Args, PoolManagerParameter): void 100% (1/1)25%  (105/419)20%  (21/105)
ac_rc_set_p2p_$_1 (Args): String 100% (1/1)52%  (49/95)38%  (6.8/18)
ac_rc_set_stage_$_1_2 (Args): String 100% (1/1)70%  (67/96)66%  (13.8/21)
ac_rc_set_slope_$_1 (Args): String 100% (1/1)86%  (30/35)83%  (5/6)
PartitionManager (): void 100% (1/1)100% (64/64)100% (19/19)
ac_rc_set_max_copies_$_1 (Args): String 100% (1/1)100% (10/10)100% (2/2)
ac_set_costcuts (Args): String 100% (1/1)100% (83/83)100% (12/12)
ac_set_pool_decision (Args): String 100% (1/1)100% (25/25)100% (2/2)
beforeSetup (): void 100% (1/1)100% (3/3)100% (2/2)
clear (): void 100% (1/1)100% (11/11)100% (3/3)
getDefaultPartitionInfo (): PartitionManager$Info 100% (1/1)100% (3/3)100% (1/1)
     
class PartitionManager$Info100% (1/1)50%  (4/8)51%  (30/59)50%  (6.5/13)
PartitionManager$Info (String, PartitionManager$Info): void 0%   (0/1)0%   (0/18)0%   (0/5)
PartitionManager$Info (String, PartitionManager$Info, PartitionManager$1): void 0%   (0/1)0%   (0/5)0%   (0/1)
access$300 (PartitionManager$Info): String 0%   (0/1)0%   (0/3)0%   (0/1)
getName (): String 0%   (0/1)0%   (0/3)0%   (0/1)
PartitionManager$Info (String): void 100% (1/1)100% (20/20)100% (5/5)
PartitionManager$Info (String, PartitionManager$1): void 100% (1/1)100% (4/4)100% (1/1)
access$200 (PartitionManager$Info): PoolManagerParameter 100% (1/1)100% (3/3)100% (1/1)
getParameter (): PoolManagerParameter 100% (1/1)100% (3/3)100% (1/1)

1// $Id: PartitionManager.java,v 1.5 2007-08-09 20:17:48 tigran Exp $
2package diskCacheV111.poolManager ;
3 
4import java.io.PrintWriter;
5import java.io.Serializable;
6import java.util.HashMap;
7import java.util.Map;
8 
9import org.dcache.cells.AbstractCellComponent;
10import org.dcache.cells.CellCommandListener;
11 
12import dmg.util.Args;
13 
14public class PartitionManager
15    extends AbstractCellComponent
16    implements Serializable, CellCommandListener
17{
18    public static class Info implements Serializable
19    {
20        private final String               _name ;
21        private final PoolManagerParameter _parameter  ;
22 
23        private Info( String name , Info info ){
24           _name      = name ;
25           _parameter = new PoolManagerParameter( info._parameter ) ;
26           _parameter.setValid(false);
27        }
28        private Info( String name ){
29           _name      = name ;
30           _parameter = new PoolManagerParameter() ;
31           if( name.equals("default") )_parameter.setValid(true);
32        }
33        public String getName(){ return _name ; }
34        public PoolManagerParameter getParameter(){ return _parameter ; }
35    }
36    private final Info        _defaultPartitionInfo ;
37    private final Map<String, Info>         _infoMap = new HashMap<String, Info>() ;
38 
39    public PartitionManager(){
40 
41       _defaultPartitionInfo  = new Info("default");
42       _infoMap.put( "default" , _defaultPartitionInfo ) ;
43 
44    }
45    public void clear(){
46       _infoMap.clear() ;
47       _infoMap.put( "default" , _defaultPartitionInfo ) ;
48    }
49    public Map<String,PoolManagerParameter > getParameterMap(){
50       Map<String,PoolManagerParameter > map = new HashMap<String,PoolManagerParameter >() ;
51       for( Info info: _infoMap.values() ){
52           map.put( info.getName() , new PoolManagerParameter( info.getParameter() ) ) ;
53       }
54       return map ;
55    }
56    public Info getDefaultPartitionInfo(){ return _defaultPartitionInfo ; }
57    public PoolManagerParameter getParameterCopyOf( ){
58       return new PoolManagerParameter( _defaultPartitionInfo.getParameter() ) ;
59    }
60    public PoolManagerParameter getParameterCopyOf( String partitionName ){
61 
62       PoolManagerParameter defaultParameter = new PoolManagerParameter( _defaultPartitionInfo.getParameter() ) ;
63       if( partitionName == null )return defaultParameter;
64 
65       Info info = _infoMap.get( partitionName ) ;
66       if( info == null )return defaultParameter ;
67       return defaultParameter.merge( info.getParameter() ) ;
68    }
69    public Info getInfoPartitionByName( String partitionName ){
70 
71        return _infoMap.get( partitionName ) ;
72 
73    }
74    /**
75      *  New way of setting 'partitioned parameters'.
76      *
77      */
78    public String hh_pmx_get_map = "" ;
79    public Object ac_pmx_get_map( Args args ){
80       return getParameterMap() ;
81    }
82 
83    public String fh_pm_set =
84       "pm set [<partitionName>|default]  OPTIONS\n"+
85       "    OPTIONS\n"+
86       "       -spacecostfactor=<scf>|off\n"+
87       "       -cpucostfactor=<ccf>|off\n"+
88       "       -max-pnfs-copies=<ccf>|off\n"+
89       "       -idle=<value>|off\n"+
90       "       -p2p=<value>|off\n"+
91       "       -alert=<value>|off\n"+
92       "       -panic=<value>|off\n"+
93       "       -fallback=<value>|off\n"+
94       "       -slope=<value>|off\n"+
95       "       -p2p-allowed=yes|no|off\n"+
96       "       -p2p-oncost=yes|no|off\n"+
97       "       -p2p-fortransfer=yes|no|off\n"+
98       "       -stage-allowed=yes|no|off\n"+
99       "       -stage-oncost=yes|no|off\n"+
100       "";
101    public String hh_pm_set = "[<partitionName>] OPTIONS #  help pm set" ;
102    public String ac_pm_set_$_0_1( Args args ){
103        String returnMessage = "";
104        String name = args.argc() == 0 ? "default" : args.argv(0) ;
105        Info info = _infoMap.get(name) ;
106 
107        //TODO: ultimately we want to remove support for this behaviour
108        if( info == null ) {
109          _infoMap.put( name , info = new Info( name , _defaultPartitionInfo ) ) ;
110          returnMessage = "partition " + name + " created";
111        }
112 
113        scanParameter( args , info._parameter ) ;
114 
115        return returnMessage;
116    }
117 
118    public String hh_pm_create = "<partitionName>";
119    public String ac_pm_create_$_1( Args args) {
120        String name = args.argv(0);
121 
122        if( _infoMap.containsKey( name)) {
123            return "Partition " + name + " already exists.";
124        }
125 
126        _infoMap.put(name, new Info(name, _defaultPartitionInfo));
127 
128        return "" ;
129    }
130    public String hh_pm_destroy = "<partitionName> # destroys parameter partition" ;
131    public String ac_pm_destroy_$_1( Args args ){
132 
133        String name = args.argv(0) ;
134        if( name.equals("default") )
135           throw new
136           IllegalArgumentException("Can't destroy default parameter partition");
137 
138        Info info = _infoMap.get(name) ;
139        if( info == null )
140          throw new
141          IllegalArgumentException("No such parameter partition "+name);
142 
143        _infoMap.remove( name ) ;
144 
145        return "" ;
146    }
147    public String hh_pm_ls = "[<section>] [-l]" ;
148    public String ac_pm_ls_$_0_1( Args args ){
149 
150       StringBuffer sb = new StringBuffer() ;
151       boolean extended = args.getOpt("l") != null ;
152       if( args.argc() == 0 ){
153          if( extended ){
154              for( Info info:  _infoMap.values() ){
155                  sb.append(info._name).append("\n");
156                  printParameterSet( sb , info._parameter ) ;
157              }
158          }else{
159              for( String sectionName : _infoMap.keySet() ){
160                  sb.append(sectionName).append("\n");
161              }
162          }
163       }else{
164          String sectionName = args.argv(0) ;
165          Info info = _infoMap.get(sectionName) ;
166          if( info == null )
167             throw new
168             IllegalArgumentException("Section not found : "+sectionName ) ;
169 
170          sb.append(info._name).append("\n");
171          printParameterSet( sb , info._parameter ) ;
172 
173 
174       }
175       return sb.toString() ;
176    }
177    private void printParameterSet( StringBuffer sb , PoolManagerParameter para ){
178 
179       if(para._performanceCostFactorSet)sb.append("   -cpucostfactor=").append(para._performanceCostFactor).append("\n");
180       if(para._spaceCostFactorSet      )sb.append("   -spacecostfactor=").append(para._spaceCostFactor).append("\n");
181       if(para._minCostCutSet           )sb.append("   -idle=").append(para._minCostCut).append("\n");
182       if(para._costCutSet              )sb.append("   -p2p=").append(para.getCostCutString()).append("\n");
183       if(para._alertCostCutSet         )sb.append("   -alert=").append(para._alertCostCut).append("\n");
184       if(para._panicCostCutSet         )sb.append("   -halt=").append(para._panicCostCut).append("\n");
185       if(para._fallbackCostCutSet      )sb.append("   -fallback=").append(para._fallbackCostCut).append("\n");
186       if(para._p2pAllowedSet           )sb.append("   -p2p-allowed=").append(para._p2pAllowed).append("\n");
187       if(para._p2pOnCostSet            )sb.append("   -p2p-oncost=").append(para._p2pOnCost).append("\n");
188       if(para._p2pForTransferSet       )sb.append("   -p2p-fortransfer=").append(para._p2pForTransfer).append("\n");
189       if(para._hasHsmBackendSet        )sb.append("   -stage-allowed=").append(para._hasHsmBackend).append("\n");
190       if(para._stageOnCostSet          )sb.append("   -stage-oncost=").append(para._stageOnCost).append("\n");
191       if(para._maxPnfsFileCopiesSet    )sb.append("   -max-copies=").append(para._maxPnfsFileCopies).append("\n") ;
192 
193       return ;
194    }
195    /**
196      *  Legacy command : are treated as 'default' dCache partition.
197      *
198      */
199    public String hh_rc_set_max_copies = "<maxNumberOfP2pCopies>" ;
200    public String ac_rc_set_max_copies_$_1(Args args ){
201 
202       _defaultPartitionInfo._parameter._maxPnfsFileCopies = Integer.parseInt(args.argv(0));
203       return "" ;
204    }
205    public String hh_set_pool_decision =
206       "[-spacecostfactor=<scf>] [-cpucostfactor=<ccf>] # values for default dCache partition" ;
207 
208    public String ac_set_pool_decision( Args args )throws Exception {
209 
210       scanParameter( args , _defaultPartitionInfo._parameter ) ;
211 
212       return "scf="+_defaultPartitionInfo._parameter._spaceCostFactor+
213             ";ccf="+_defaultPartitionInfo._parameter._performanceCostFactor ;
214    }
215    public String hh_rc_set_p2p = "on|off|oncost|fortransfer|notfortransfer" ;
216    public String ac_rc_set_p2p_$_1( Args args ){
217 
218       PoolManagerParameter para = _defaultPartitionInfo._parameter ;
219 
220       String mode = args.argv(0) ;
221 
222       if( mode.equals("on") ){
223          para._p2pAllowed      = true ;
224          para._p2pOnCost       = false ;
225          para._p2pForTransfer  = false ;
226       }else if( mode.equals("oncost") ){
227          para._p2pOnCost  = true ;
228          para._p2pAllowed = true ;
229       }else if( mode.equals("off") ){
230          para._p2pOnCost  = false ;
231          para._p2pAllowed = false ;
232          para._p2pForTransfer  = false ;
233       }else if( mode.equals("fortransfer") ){
234          para._p2pForTransfer  = true ;
235          para._p2pAllowed      = true ;
236       }else throw new
237             IllegalArgumentException("Usage : rc set p2p on|off|oncost|fortransfer");
238 
239       return "p2p="+( para._p2pAllowed ? "on" : "off" )+
240              ";oncost="+( para._p2pOnCost ? "on" : "off" )+
241              ";fortransfer="+( para._p2pForTransfer ? "on" : "off" ) ;
242    }
243    public String hh_rc_set_stage = "[oncost] on|off" ;
244    public String ac_rc_set_stage_$_1_2( Args args ){
245 
246       PoolManagerParameter para = _defaultPartitionInfo._parameter ;
247       String help   = "rc set stage "+hh_rc_set_stage;
248       String oncost = args.argv(0) ;
249 
250       if( oncost.equals( "on" ) ){
251          para._hasHsmBackend = true ;
252          return "stage on" ;
253       }else if( oncost.equals( "off" ) ){
254          para._hasHsmBackend = false ;
255          return "stage off" ;
256       }else if( oncost.equals( "oncost" ) ){
257          if( args.argc() < 2 )
258              throw new
259              IllegalArgumentException(help);
260 
261          String mode = args.argv(1) ;
262          if( mode.equals("on") ){
263             para._stageOnCost   = true ;
264             para._hasHsmBackend = true ;
265          }else if( mode.equals("off") ){
266             para._stageOnCost  = false ;
267          }else{
268                throw new
269                IllegalArgumentException(help);
270          }
271          return "stage-oncost="+(para._stageOnCost?"on":"off") ;
272       }else
273           throw new
274           IllegalArgumentException(help);
275 
276    }
277    public String fh_set_costcuts =
278          "  set costcuts [-<options>=<value> ... ]\n"+
279          "\n"+
280          "   Options  |  Default  |  Description\n"+
281          " -------------------------------------------------------------------\n"+
282          "     idle   |   0.0     |  below 'idle' : 'reduce duplicate' mode\n"+
283          "     p2p    |   0.0     |  above : start pool to pool mode\n"+
284          "            |           |  If p2p value is a percent then p2p is dynamically\n"+
285          "            |           |  assigned that percentile value of pool performance costs\n"+
286          "     alert  |   0.0     |  stop pool 2 pool mode, start stage only mode\n"+
287          "     halt   |   0.0     |  suspend system\n"+
288          "   fallback |   0.0     |  Allow fallback in Permission matrix on high load\n"+
289          "\n"+
290          "     A value of zero disabled the corresponding value\n\n";
291    public String hh_set_costcuts = "[-<option>=<value> ...] # see 'help set costcuts'" ;
292    public String ac_set_costcuts( Args args ){
293 
294       PoolManagerParameter para = _defaultPartitionInfo._parameter ;
295 
296       String value = args.getOpt("idle") ;
297       if( value != null )para._minCostCut = Double.parseDouble(value) ;
298       value = args.getOpt("p2p") ;
299       if( value != null ) para.setCostCut( value);
300       value = args.getOpt("alert") ;
301       if( value != null )para._alertCostCut = Double.parseDouble(value) ;
302       value = args.getOpt("halt") ;
303       if( value != null )para._panicCostCut = Double.parseDouble(value) ;
304       value = args.getOpt("fallback") ;
305       if( value != null )para._fallbackCostCut = Double.parseDouble(value) ;
306 
307 
308       return "costcuts;idle="+para._minCostCut+
309                      ";p2p="+para.getCostCutString()+
310                      ";alert="+para._alertCostCut+
311                      ";halt="+para._panicCostCut+
312                      ";fallback="+para._fallbackCostCut ;
313    }
314    public String hh_rc_set_slope = "<p2p source/destination slope>" ;
315    public String ac_rc_set_slope_$_1( Args args ){
316 
317       PoolManagerParameter para = _defaultPartitionInfo._parameter ;
318 
319        double d = Double.parseDouble(args.argv(0));
320        if( ( d < 0.0 ) || ( d > 1.0 ) )
321           throw new
322           IllegalArgumentException("0 < slope < 1");
323 
324        para._slope = d ;
325        return "p2p slope set to "+para._slope ;
326    }
327    /**
328      * COSTFACTORS
329      *
330      *   spacecostfactor   double
331      *   cpucostfactor     double
332      *
333      * COSTCUTS
334      *
335      *   idle      double
336      *   p2p       double
337      *   alert     double
338      *   panic     double
339      *   slope     double
340      *   fallback  double
341      *
342      * P2P
343      *
344      *   p2p-allowed     boolean
345      *   p2p-oncost      boolean
346      *   p2p-fortransfer boolean
347      *
348      * STAGING
349      *
350      *   stage-allowed   boolean
351      *   stage-oncost    boolean
352      *
353      * OTHER
354      *   max-copies     int
355      *
356      */
357    private void scanParameter( Args args , PoolManagerParameter parameter ){
358 
359       PoolManagerParameter paramDefault = _defaultPartitionInfo._parameter;
360 
361       String tmp = args.getOpt("spacecostfactor") ;
362       if( tmp != null ){
363          if( tmp.equals("off") ){
364            parameter.unsetSpaceCostFactor();
365            parameter._spaceCostFactor = paramDefault._spaceCostFactor;
366          } else {
367             parameter.setSpaceCostFactor(Double.parseDouble(tmp));
368          }
369       }
370       if( ( tmp = args.getOpt("cpucostfactor") ) != null ){
371          if( tmp.equals("off") ){
372            parameter.unsetPerformanceCostFactor();
373            parameter._performanceCostFactor = paramDefault._performanceCostFactor;
374          } else {
375             parameter.setPerformanceCostFactor(Double.parseDouble(tmp));
376          }
377       }
378 
379       if( ( tmp = args.getOpt("idle") ) != null ){
380          if( tmp.equals("off") ){
381            parameter.unsetMinCostCut();
382            parameter._minCostCut = paramDefault._minCostCut;
383          } else {
384             parameter.setMinCostCut(Double.parseDouble(tmp));
385          }
386       }
387       if( ( tmp = args.getOpt("p2p") ) != null ){
388          if( tmp.equals("off") ){
389            parameter.setCostCut( paramDefault.getCostCutString());
390            parameter.unsetCostCut();
391          } else {
392             parameter.setCostCut(tmp);
393          }
394       }
395       if( ( tmp = args.getOpt("alert") ) != null ){
396          if( tmp.equals("off") ){
397            parameter.unsetAlertCostCut();
398                parameter._alertCostCut = paramDefault._alertCostCut;
399          } else {
400            parameter.setAlertCostCut(Double.parseDouble(tmp));
401          }
402       }
403       if( ( tmp = args.getOpt("panic") ) != null ){
404          if( tmp.equals("off") ){
405            parameter.unsetPanicCostCut();
406            parameter._panicCostCut = paramDefault._panicCostCut;
407          } else {
408            parameter.setPanicCostCut(Double.parseDouble(tmp));
409          }
410       }
411       if( ( tmp = args.getOpt("slope") ) != null ){
412          if( tmp.equals("off") ){
413            parameter.unsetSlope();
414            parameter._slope = paramDefault._slope;
415          } else {
416            parameter.setSlope(Double.parseDouble(tmp));
417          }
418       }
419 
420       if( ( tmp = args.getOpt("fallback") ) != null ){
421          if( tmp.equals("off") ){
422            parameter.unsetFallbackCostCut();
423            parameter._fallbackCostCut = paramDefault._fallbackCostCut;
424          } else {
425            parameter.setFallbackCostCut(Double.parseDouble(tmp));
426          }
427       }
428 
429       if( ( tmp = args.getOpt("max-copies") ) != null ){
430          if( tmp.equals("off") ){
431            parameter.unsetMaxPnfsFileCopies();
432            parameter._maxPnfsFileCopies = paramDefault._maxPnfsFileCopies;
433          } else {
434            parameter.setMaxPnfsFileCopies(Integer.parseInt(tmp));
435          }
436       }
437 
438       if( ( tmp = args.getOpt("p2p-allowed") ) != null ){
439           if( tmp.equals("off") ){
440               parameter.unsetP2pAllowed();
441               parameter._p2pAllowed = paramDefault._p2pAllowed;
442 
443               parameter.unsetP2pOnCost();
444               parameter._p2pOnCost = paramDefault._p2pOnCost;
445 
446               parameter.unsetP2pForTransfer();
447               parameter._p2pForTransfer = paramDefault._p2pForTransfer;
448            } else if( tmp.equals("yes") ){
449               parameter.setP2pAllowed(true);
450            } else if( tmp.equals("no") ) {
451               parameter.setP2pAllowed(false);
452               parameter.setP2pOnCost(false);
453               parameter.setP2pForTransfer(false);
454            } else throw new
455               IllegalArgumentException("Usage: ... -p2p-allowed=yes|no|off");
456        }
457 
458       if( ( tmp = args.getOpt("p2p-oncost") ) != null ){
459          if( tmp.equals("off") ){
460            parameter.unsetP2pOnCost();
461            parameter._p2pOnCost = paramDefault._p2pOnCost;
462          } else if( tmp.equals("yes")){
463            parameter.setP2pOnCost(true);
464            parameter.setP2pAllowed(true);
465          } else if( tmp.equals("no")){
466            parameter.setP2pOnCost(false);
467          } else throw new
468              IllegalArgumentException("Usage: ... -p2p-oncost=yes|no|off");
469       }
470 
471       if( ( tmp = args.getOpt("p2p-fortransfer") ) != null ){
472          if( tmp.equals("off") ){
473            parameter.unsetP2pForTransfer();
474            parameter._p2pForTransfer = paramDefault._p2pForTransfer;
475          } else if( tmp.equals("yes") ){
476            parameter.setP2pForTransfer(true);
477            parameter.setP2pAllowed(true);
478          } else if( tmp.equals("no") ){
479            parameter.setP2pForTransfer(false);
480          } else throw new
481              IllegalArgumentException("Usage: ... -p2p-fortransfer=yes|no|off");
482       }
483 
484       if( ( tmp = args.getOpt("stage-allowed") ) != null ){
485          if( tmp.equals("off") ){
486            parameter.unsetHasHsmBackend();
487            parameter._hasHsmBackend = paramDefault._hasHsmBackend;
488 
489            parameter.unsetStageOnCost();
490            parameter._stageOnCost = paramDefault._stageOnCost;
491          } else if( tmp.equals("yes") ){
492            parameter.setHasHsmBackend(true);
493          } else if( tmp.equals("no") ){
494            parameter.setHasHsmBackend(false);
495            parameter.setStageOnCost(false);
496          } else throw new
497              IllegalArgumentException("Usage: ... -stage-allowed=yes|no|off");
498       }
499 
500       if( ( tmp = args.getOpt("stage-oncost") ) != null ){
501          if( tmp.equals("off") ){
502            parameter.unsetStageOnCost();
503            parameter._stageOnCost = paramDefault._stageOnCost;
504          } else if( tmp.equals("yes") ){
505            parameter.setStageOnCost(true);
506            parameter.setHasHsmBackend(true);
507          } else if( tmp.equals("no") ){
508            parameter.setStageOnCost(false);
509          } else throw new
510              IllegalArgumentException("Usage: ... -stage-oncost=yes|no|off") ;
511       }
512 
513    }
514    private boolean _useLegacySetupPrintout = true ;
515 
516    @Override
517    public void beforeSetup()
518    {
519        clear();
520    }
521 
522    @Override
523    public void printSetup(PrintWriter pw)
524    {
525        if (_useLegacySetupPrintout) {
526           dumpLegacyDefaultInfo(pw, _defaultPartitionInfo);
527        } else {
528           Info info = _infoMap.get("default");
529           dumpInfo(pw, info);
530        }
531        for (Info info: _infoMap.values()) {
532            if (info._name.equals("default"))
533                continue;
534            pw.append("pm create ").append(info._name).append("\n");
535            dumpInfo(pw, info);
536        }
537    }
538 
539    private void dumpInfo(PrintWriter pw, Info info)
540    {
541        PoolManagerParameter para = info._parameter;
542 
543        pw.append("pm set ").append(info._name).append(" ");
544        dumpCostOptions(pw, para);
545        pw.append("\n") ;
546 
547        pw.append("pm set ").append(info._name).append(" ");
548        dumpThresholdOptions(pw, para);
549        pw.append("\n");
550 
551        pw.append("pm set ").append(info._name).append(" ");
552        dumpP2pOptions(pw, para);
553        pw.append("\n");
554 
555        pw.append("pm set ").append(info._name).append(" ");
556        dumpStageOptions(pw, para);
557        pw.append("\n");
558 
559        pw.append("pm set ").append(info._name).append(" ");
560        dumpMiscOptions(pw, para);
561        pw.append("\n");
562    }
563 
564    private void dumpCostOptions(PrintWriter pw, PoolManagerParameter para)
565    {
566        pw.append(" -cpucostfactor=").print(para._performanceCostFactor);
567        pw.append(" -spacecostfactor=").print(para._spaceCostFactor);
568    }
569 
570    private void dumpThresholdOptions(PrintWriter pw, PoolManagerParameter para)
571    {
572        pw.append(" -idle=").print(para._minCostCut);
573        pw.append(" -p2p=").print(para.getCostCutString());
574        pw.append(" -alert=").print(para._alertCostCut);
575        pw.append(" -halt=").print(para._panicCostCut);
576        pw.append(" -fallback=").print(para._fallbackCostCut);
577    }
578 
579    private void dumpP2pOptions(PrintWriter pw, PoolManagerParameter para)
580    {
581        if (!para._p2pAllowed) {
582            pw.append(" -p2p-allowed=no");
583        } else {
584            pw.append(" -p2p-allowed=yes");
585            pw.append(" -p2p-oncost=").print(para._p2pOnCost ? "yes":"no");
586            pw.append(" -p2p-fortransfer=").print(para._p2pForTransfer ? "yes":"no");
587        }
588    }
589 
590    private void dumpStageOptions(PrintWriter pw, PoolManagerParameter para)
591    {
592        if (!para._hasHsmBackend) {
593            pw.append(" -stage-allowed=no");
594        } else {
595            pw.append(" -stage-allowed=yes");
596            pw.append(" -stage-oncost=").print(para._stageOnCost ? "yes":"no");
597        }
598    }
599 
600    private void dumpMiscOptions(PrintWriter pw, PoolManagerParameter para)
601    {
602        pw.append(" -max-copies=").print(para._maxPnfsFileCopies);
603    }
604 
605    /**
606      *   legacy output
607      */
608    private void dumpLegacyDefaultInfo(PrintWriter pw, Info info)
609    {
610        PoolManagerParameter para = info._parameter;
611 
612        pw.append("set pool decision");
613        dumpCostOptions(pw, para);
614        pw.append("\n");
615 
616        pw.append("set costcuts") ;
617        dumpThresholdOptions(pw, para);
618        pw.append("\n");
619 
620        dumpP2pDefaultOptions(pw, para);
621    }
622 
623    private void dumpP2pDefaultOptions(PrintWriter pw, PoolManagerParameter para)
624    {
625        pw.append("rc set p2p " ).println(para._p2pAllowed ? "on":"off");
626        if (para._p2pOnCost)
627            pw.println("rc set p2p oncost");
628        if (para._p2pForTransfer )
629            pw.println("rc set p2p fortransfer");
630        pw.append("rc set stage oncost ").println(para._stageOnCost?"on":"off");
631        pw.append("rc set stage ").println(para._hasHsmBackend?"on":"off");
632        pw.append("rc set slope ").println(para._slope);
633        pw.append("rc set max copies ").println(para._maxPnfsFileCopies);
634    }
635}

[all classes][diskCacheV111.poolManager]
EMMA 2.0.5312 (C) Vladimir Roubtsov