dirs01.gms : 사용자 공간에서 gamslice.txt 및 gamsconfig.yaml 검색 및 처리 테스트

설명

이 테스트는 작업 디렉토리 아래에 잘못된 라이센스 파일을 배치하고 환경 변수를 설정합니다.
피망 슬롯 사용자 데이터를 지시하는 APPDATA(Windows), HOME(macOS) 및 XDG_DATA_HOME(기타 Unix)
라이센스를 수령하기 위한 위치 루틴.

피망 슬롯의 사용자 구성을 테스트하기 위해 좋은 gamsconfig.yaml과 나쁜 gamsconfig.yaml을 사용하여 비슷한 테스트를 수행합니다.
gamsconfig.yaml 파일을 통해.

피망 슬롯 시작 시 환경 변수가 적용되므로 테스트 설정이 복잡합니다.
피망 슬롯가 실행되는 동안에는 이를 제어할 수 없습니다. 따라서 이 테스트 스크립트는 두 개의 스크립트(dirtest1)를 더 호출합니다.
그리고 dirtyest2)는 일부 피망 슬롯 스크립트를 다시 호출합니다.

기고자: Michael Bussieck, 2020년 4월

소형 모델 유형 :피망 슬롯


카테고리 : 피망 슬롯 테스트 라이브러리


메인 파일 : dirs01.gms

$title '사용자 공간에서 gamslice.txt 및 gamsconfig.yaml 검색 및 처리 테스트' (dirs01,SEQ=820)

$onText
이 테스트는 작업 디렉토리 아래에 잘못된 라이센스 파일을 배치하고 환경 변수를 설정합니다.
피망 슬롯 사용자 데이터를 지시하는 APPDATA(Windows), HOME(macOS) 및 XDG_DATA_HOME(기타 Unix) 
라이센스를 수령하기 위한 위치 루틴.

피망 슬롯의 사용자 구성을 테스트하기 위해 좋은 gamsconfig.yaml과 나쁜 gamsconfig.yaml을 사용하여 비슷한 테스트를 수행합니다.
gamsconfig.yaml 파일을 통해.

피망 슬롯 시작 시 환경 변수가 적용되므로 테스트 설정이 복잡합니다.
피망 슬롯가 실행되는 동안에는 이를 제어할 수 없습니다. 따라서 이 테스트 스크립트는 두 개의 스크립트(dirtest1)를 더 호출합니다. 
그리고 dirtyest2)는 일부 피망 슬롯 스크립트를 다시 호출합니다.

기고자: Michael Bussieck, 2020년 4월
$offText

* 31.0 이전의 피망 슬롯 버전에서는 실행하지 마세요.
$gamsversion 310이 아닌 경우 $exit

* 일부 통화의 경우 오류가 예상됩니다.
$offCheckError레벨

* 구문이 잘못된 YAML 파일
$onEcho > 1.yaml
commandLine매개변수:
  - eolCom:
      값: '//'
        최대 버전: 31
$offEcho
* 환경 변수가 있는 YAML 파일
$onEcho > 2.yaml
환경변수:
  - MYGAMSVAR:
      값: 1967
$offEcho
$onEchoV > checkev1.gms
$if not %sysEnv.MYGAMSVAR%==1967 $abort 시스템 환경 변수가 1967로 설정될 것으로 예상됩니다. 실제로 %sysEnv.MYGAMSVAR%가 있습니다.
$offEcho
$onEchoV > checkev2.gms
$if %sysEnv.MYGAMSVAR%==1967 $abort 시스템 환경 변수가 1967로 설정되지 않을 것으로 예상됩니다.
$offEcho

$onEcho > 3.yaml
commandLine매개변수:
  - --MYGAMSVAR:
      값: 1967
$offEcho
$onEchoV > checkdd1.gms
$if not %MYGAMSVAR%==1967 $abort 이중 대시 변수가 1967로 설정될 것으로 예상됩니다. 실제로 %MYGAMSVAR%가 있습니다.
$offEcho
$onEchoV > checkdd2.gms
$if %MYGAMSVAR%==1967 $abort 이중 대시 변수가 1967로 설정되지 않을 것으로 예상됩니다.
$offEcho

$onEcho > 4.yaml
commandLine매개변수:
  - LP:
      값: soplex
$offEcho
$onEchoV > checkclp1.gms
$if not %피망 슬롯LP%==soplex $abort CLP LP가 soplex로 설정될 것으로 예상합니다. 실제로 %피망 슬롯LP%가 있습니다.
$offEcho
$onEchoV > checkclp2.gms
$if %피망 슬롯LP%==soplex $abort CLP LP가 soplex로 설정되지 않을 것으로 예상합니다.
$offEcho

$ifThen %system.filesys%==UNIX
$ sn gmsgenus.run 설정
$ set en gmsgenux.out
$ ln libcpxcclib64.so 설정
$else
$ sn gmsgennt.cmd 설정
$ set en gmsgennx.exe
$ ln cpxcclib64.dll 설정
$endIf
$if %system.platform%==DEX $set ln libcpxcclib64.dylib
$if %system.platform%==DAX $set ln libcpxcclib64.dylib
$onEcho > 5.yaml
솔버 구성:
- 마이플렉스:
    파일 유형: 1011
    사전 유형: 5
    라이센스 코드: CPCL
    defaultOkFlag: 참
    숨겨진 플래그: 거짓
    def이름: optcplex.def
    스크립트 이름: %sn%
    실행 파일 이름: %en%
    도서관:
      lib이름: %ln%
      감사코드: cpx
      솔버인터페이스 유형: 1
      threadSafeIndic: 참
    모델 유형:
    - 밉
    - LP
$offEcho

$onEchoV > dirtyst1.gms
$set mkdir mkdir
$if %system.fileSys%==UNIX $set mkdir mkdir -p

*
* 데이터 디렉토리 생성
*
$ifThen %system.filesys%==UNIX
$ userDataDir "%system.userDataDir%" 설정
$else
$ userDataDir "%sysEnv.APPDATA%피망 슬롯\" 설정
$endIf
$dExist가 아닌 경우 "%userDataDir%" $call %mkdir% "%userDataDir%"

*
* userDataDir에서 잘못된 라이센스에 액세스하는지 확인하십시오.
*
$echo 잘못된 라이센스 파일 > "%userDataDir%gamslice.txt"
$call.checkErrorLevel gamslib -q 1
$call 피망 슬롯 tnsport lo 2 라이센스 "%userDataDir%gamslice.txt"
$ifE errorLevel<>7 $abort '예상된 라이센스 오류(명시적)'
$call 피망 슬롯 trnsport lo 2
$ifE errorLevel<>7 $abort '예상된 라이센스 오류(암시적)'
$if %system.filesys%==UNIX $call rm -rf "%userDataDir%"
$if not %system.filesys%==UNIX $call del /Q /S "%userDataDir%" > nul
$offEcho

$ifThen %system.filesys%==UNIX
$ if %system.platform%==DEX $call HOME=`pwd` 피망 슬롯 dirty1 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$ if %system.platform%==DAX $call HOME=`pwd` 피망 슬롯 dirty1 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$ %system.platform%==DEX가 아닌 경우 $if %system.platform%==DAX $call XDG_DATA_HOME=`pwd`/피망 슬롯 피망 슬롯 dirty1 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$else
$ ifThen.Windows가 존재하지 않습니다. "%system.userDataDir%gamslice.txt"
$ APPDATA "%sysenv.APPDATA%" 설정
$ setEnv APPDATA "%피망 슬롯workDir%"
$ 전화 피망 슬롯 dirty1 lo=2 > %system.nullfile%
$ setEnv APPDATA "%APPDATA%"
$ endIf.Windows
$endIf
$ifE errorLevel<>0 $abort dirtyest1에 실패했습니다. dirtytest1.lst/log 검사 

$onEchoV > dirtyst2.gms
$set mkdir mkdir
$if %system.fileSys%==UNIX $set mkdir mkdir -p

*
* 구성 디렉토리 생성
*
$ifThen %system.filesys%==UNIX
$ userConfigDir "%system.userConfigDir%" 설정
$else
$ userConfigDir "%sysEnv.LOCALAPPDATA%피망 슬롯\" 설정
$endIf
$dExist가 아닌 경우 "%userConfigDir%" $call %mkdir% "%userConfigDir%"

*
* 잘못된 형식의 gamsconfig.yaml에 액세스하면 불만이 있는지 확인하세요.
*
$call.checkErrorLevel cp -f 1.yaml "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel gamslib -q 1
$call 피망 슬롯 trnsport lo 3 a=c > trnsport.log
$call.checkErrorLevel grep "오류: yaml_parser_parse의 시스템 문제:" trnsport.log > %system.nullFile%

*
* gamsconfig.yaml에서 환경 변수를 가져왔는지 확인하세요.
*
$call.checkErrorLevel cp -f 2.yaml "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkev1 lo=3 > checkev1.log
*
* 버전 필터링이 작동하는지 확인
*
$eval prevRelease %system.GamsRelease%-1
$echo ' maxVersion: %prevRelease%' >> "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkev2 lo=3 > checkev.log

*
* gamsconfig.yaml에서 이중 대시 변수를 얻었는지 확인하세요.
*
$call.checkErrorLevel cp -f 3.yaml "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkdd1 lo=3 > checkdd1.log
*
* 버전 필터링이 작동하는지 확인
*
$eval prevRelease %system.GamsRelease%-1
$echo ' maxVersion: %prevRelease%' >> "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkdd2 lo=3 > checkdd2.log

*
* gamsconfig.yaml에서 일반 CLP를 가져오는지 확인하세요.
*
$call.checkErrorLevel cp -f 4.yaml "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkclp1 lo=3 > checkclp1.log
*
* 버전 필터링이 작동하는지 확인
*
$eval prevRelease %system.GamsRelease%-1
$echo ' maxVersion: %prevRelease%' >> "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel 피망 슬롯 checkclp2 lo=3 > checkclp2.log

*
* gamsconfig.yaml에서 MYCPLEX를 솔버로 가져왔는지 확인하세요.
*
$call.checkErrorLevel cp -f 5.yaml "%userConfigDir%gamsconfig.yaml"
$call.checkErrorLevel gamslib -q 1
$call.checkErrorLevel 피망 슬롯 tnsport lo 3 lp=mycplex > tnsport.log
$call.checkErrorLevel grep "MYCPLEX 실행 중" trnsport.log > %system.nullFile%
*
* 버전 필터링이 작동하는지 확인
*
$eval nextRelease %system.GamsRelease%+1
$echo ' minVersion: %nextRelease%' >> "%userConfigDir%gamsconfig.yaml"
$call 피망 슬롯 trnsport lo 3 lp=mycplex > trnsport.log
$call.checkErrorLevel grep "LP=mycplex에 대한 알 수 없는 솔버 이름" trnsport.log > %system.nullFile%
$if %system.filesys%==UNIX $call rm -rf "%userConfigDir%"
$if not %system.filesys%==UNIX $call del /Q /S "%userConfigDir%" > nul
$offEcho

$ifThen %system.filesys%==UNIX
$ if %system.platform%==DEX $call HOME=`pwd` 피망 슬롯 dirty2 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$ if %system.platform%==DAX $call HOME=`pwd` 피망 슬롯 dirty2 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$ %system.platform%==DEX $if 아님 %system.platform%==DAX $call XDG_CONFIG_HOME=`pwd`/피망 슬롯 피망 슬롯 dirty2 lo=2 License="%system.licenseFileName%" > %system.nullfile%
$else
$ LOCALAPPDATA "%sysenv.LOCALAPPDATA%" 설정
$ setEnv LOCALAPPDATA "%피망 슬롯workDir%"
$ 전화 게임 dirtyst2 lo=2 > %system.nullfile%
$ setEnv LOCALAPPDATA "%LOCALAPPDATA%"
$endIf
$ifE errorLevel<>0 $abort dirtytest2에 실패했습니다. dirtytest2.lst/log 검사