<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt file distributed with this work for
additional information regarding copyright ownership.  The ASF licenses this
file to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License.  You may obtain a copy of
the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
License for the specific language governing permissions and limitations under
the License.
-->
<!-- Configuration file for running PGE Test -->
<!-- Created by mattmann -->
<!-- Created on November 11, 2005 at 09:22:00 -->
<!-- GDS Build n.mm.pp -->
<!-- Test name: testPGEConfigFileReader -->

<input>
   <group name="PGENameGroup">
     <scalar name="PGEName">Test PGE</scalar>
   </group>
   
   <group name="InputProductFiles">
     <scalar name="VCID17Stream">/data/o04521/10/oco_10_200090503_o04521_p125_vcid17_mcf200901051234ops.hdf</scalar>
     <scalar name="VCID32Stream">/data/o04521/10/oco_10_200090503_o04521_p125_vcid32_mcf200901051234ops.hdf</scalar>
     <scalar name="VCID33Stream">/data/o04521/10/oco_10_200090503_o04521_p125_vcid33_mcf200901051234ops.hdf</scalar>
     <scalar name="VCID34Stream">/data/o04521/10/oco_10_200090503_o04521_p125_vcid34_mcf200901051234ops.hdf</scalar>
   </group>

   <group name="StaticFileIdentificationFiles">
     <scalar name="SFIF12Stream">/data/o04521/10/oco_10_200090503_o04521_p125_sfif12_mcf200901051234ops.hdf</scalar>
     <scalar name="SFIF34Stream">/data/o04521/10/oco_10_200090503_o04521_p125_sfif34_mcf200901051234ops.hdf</scalar>
   </group>
   
   <group name="DynamicAuxiliaryInputFiles">
     <scalar name="AuxStream1">/data/o04521/10/oco_10_200090503_o04521_p125_aux1_mcf200901051234ops.aux</scalar>
   </group>
   
   <group name="RecordedAuxiliaryInputFiles">
      <scalar name="RecAuxStream1">/data/o04521/10/oco_10_200090503_o04521_p125_raux1_mcf200901051234ops.raux</scalar>
   </group>
   
   <group name="ProductPathGroup">
      <scalar name="ProductPath">/data</scalar>
   </group>
   
   <group name="MonitorGroup">
      <scalar name="MonitorPath">/data/monitor</scalar>
      <scalar name="MonitorFilenameFormat">.monitor</scalar>
   </group>

   <group name="MonitorLevel">
      <scalar name="MonIO">High</scalar>
      <scalar name="MonAlg">Off</scalar>
      <scalar name="MonControl">Med</scalar>
   </group>
   
   <!--  PGE Specific Info -->
   
   <group name="MyPGEInfo">
     <scalar name="TestScalar1">Scalar1</scalar>
     <vector name="TestVector1">
       <element>10</element>
       <element>test string</element>
       <element>55.5</element>
       <element>/data/1/2/3/file.file</element>
     </vector>
     
     <matrix name="TestMatrix1">
       <tr>
         <td>55</td>
         <td>12</td>
         <td>1</td>
       </tr>
        <tr>
         <td>44</td>
         <td>33</td>
         <td>100</td>
       </tr>    
     </matrix>
   </group>
   
   
</input>
