there may be more than one index per name
This commit is contained in:
		
							parent
							
								
									9289f45dce
								
							
						
					
					
						commit
						98fd0fdbcc
					
				@ -96,8 +96,19 @@ public class Pdh extends Win32 {
 | 
			
		||||
                index = (String)o;
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
            int[] ix =
 | 
			
		||||
                (int[])this.map.get(o);
 | 
			
		||||
            if (ix == null) {
 | 
			
		||||
                ix = new int[1];
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                int[] cur = ix;
 | 
			
		||||
                ix = new int[cur.length + 1];
 | 
			
		||||
                System.arraycopy(cur, 0, ix, 1, cur.length);
 | 
			
		||||
            }
 | 
			
		||||
            ix[0] = Integer.parseInt(index);
 | 
			
		||||
            //name -> index
 | 
			
		||||
            this.map.put(o, index);
 | 
			
		||||
            this.map.put(o, ix);
 | 
			
		||||
            index = null; //reset
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
@ -158,12 +169,12 @@ public class Pdh extends Win32 {
 | 
			
		||||
    private static String getCounterName(String englishName)
 | 
			
		||||
        throws Win32Exception {
 | 
			
		||||
 | 
			
		||||
        String index = (String)counters.get(englishName);
 | 
			
		||||
        if (index == null) {
 | 
			
		||||
        int[] ix = (int[])counters.get(englishName);
 | 
			
		||||
        if (ix == null) {
 | 
			
		||||
            return englishName;
 | 
			
		||||
        }
 | 
			
		||||
        int ix = Integer.parseInt(index);
 | 
			
		||||
        String name = getCounterName(ix);
 | 
			
		||||
 | 
			
		||||
        String name = getCounterName(ix[0]);
 | 
			
		||||
        return name;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,6 +18,7 @@
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.win32.test;
 | 
			
		||||
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.test.SigarTestCase;
 | 
			
		||||
@ -76,19 +77,30 @@ public class TestPdh extends SigarTestCase {
 | 
			
		||||
        Map counters = Pdh.getEnglishPerflibCounterMap();
 | 
			
		||||
 | 
			
		||||
        assertGtZeroTrace("counters", counters.size());
 | 
			
		||||
        int dups = 0;
 | 
			
		||||
        for (Iterator it=counters.entrySet().iterator(); it.hasNext();) {
 | 
			
		||||
            Map.Entry entry = (Map.Entry)it.next();
 | 
			
		||||
            String name = (String)entry.getKey();
 | 
			
		||||
            int[] ix = (int[])entry.getValue();
 | 
			
		||||
            if (ix.length > 1) {
 | 
			
		||||
                dups++;
 | 
			
		||||
                //traceln(name + " has dups: " + ix.length);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        traceln(dups + " names have dups");
 | 
			
		||||
 | 
			
		||||
        String[] keys = {
 | 
			
		||||
            "System", "System Up Time"
 | 
			
		||||
        };
 | 
			
		||||
        String last = null;
 | 
			
		||||
        int last = -1;
 | 
			
		||||
        for (int i=0; i<keys.length; i++) {
 | 
			
		||||
            String name = keys[i];
 | 
			
		||||
            String index = (String)counters.get(name);
 | 
			
		||||
            assertFalse(index.equals(last));
 | 
			
		||||
            traceln(name + "=" + index);
 | 
			
		||||
            last = index;
 | 
			
		||||
            int[] ix = (int[])counters.get(name);
 | 
			
		||||
            assertFalse(ix[0] == last);
 | 
			
		||||
            traceln(name + "=" + ix[0]);
 | 
			
		||||
            last = ix[0];
 | 
			
		||||
            String lookupName =
 | 
			
		||||
                Pdh.getCounterName(Integer.parseInt(index));
 | 
			
		||||
                Pdh.getCounterName(ix[0]);
 | 
			
		||||
            traceln(name + "=" + lookupName);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user