SourceCode/PROMS/Baseline/AutomatedTesting.sql
Rich 429064af6b Output directly to the desstination folder so that output is not lost after partial completion.
Add the ability to skip processing of some of the Folders
Added logic to save the name of the folder if it contains reserved characters (space, dash, slash and backslash)
2018-12-03 19:25:55 +00:00

153 lines
5.4 KiB
Transact-SQL

/* ========================================================================
Copyright 2018 - Volian Enterprises, Inc. All rights reserved.
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
------------------------------------------------------------------------
This is a SQL script which can be used to create a CMD Batch file to
perform automated testing on all of the folders within the current
database and server.
------------------------------- NOTE -----------------------------------
There are no parameters in this script. The following values are
retrieved from the databse which is currently open
DB_NAME() - Gets the current Database Name
@@Servername - Gets the current SQL Servername
These are passed as parameters to PROMS along with some other paramters
which specifies how the procedure should be printed.
You can add REM before any folders that should not print
****************************** CAUTION *********************************
If you are comparing against code created before 8/1/2018 you will need
to specify /NW to exclude the Word output which had not previously been
included.
=======================================================================*/
PRINT 'REM Blank Line Before Batch Commands
@ECHO OFF
ECHO Automated testing assumes the following:
ECHO C:\PDFS will be used to store the results of the Automated Print Testing
ECHO C:\PROMS will be used to store the executable for the Automated Print Testing
ECHO ---
ECHO The following Parameter Needs to be set:
set PROMSEXE=1.5.1805.910.Production
ECHO PROMSEXE [%PROMSEXE%] - Subfolder of the PROMS Executable
ECHO ---
ECHO Automated Testing will:
ECHO Delete PDFs
ECHO Update Formats From the folder promsformats under the PROMSEXE folder
set dbName=' + DB_NAME() + '
set /p GroupComment=Specify Output[%PROMSEXE%_%dbName%]: || set GroupComment=%PROMSEXE%_%dbName%
ECHO AAA >%TEMP%\VEPROMS\NewFile.txt
for %%a in (%TEMP%\VEPROMS\NewFile.txt) do Set fdt=%%~ta
for /F "tokens=1,2,3,4,5,6 delims=/: " %%i in (''echo %fdt%'') do call:sc_FixTime %%k %%i %%j %%n %%l %%m
set fdt=%fdt::=%_%GroupComment%
set ServerName=' + @@Servername + '
md %TEMP%\VEPROMS\%fdt%
md C:\PDFs\%fdt%
echo %date% %time% Start ' + @@Servername + ' ' + DB_NAME() + '%GroupComment% >>C:\pdfs\%fdt%\Times.txt
del %TEMP%\VEPROMS\NewFile.txt
Rem Cleanup output folder before processing
del %temp%\VEPROMS\*.txt
del %temp%\VEPROMS\*.pdf
Rem Delete PDFs
sqlcmd -E -S%servername% -d%DBNAME% -b -Q "delete from pdfs"
if ERRORLEVEL 1 goto :oops
Rem Update Formats
call :sc_setformats unnecessary unnecessary ' + DB_NAME() + ' unnecessary %PROMSEXE%
Rem Perform PROMS printing for each Folder ----------------------------------------
GoTo :SkipStart
Rem Skip some DocVersions (Working Drafts)
:SkipStart
'
declare @CommandLine nvarchar(255)
declare Commands cursor for
select 'Call :sc_PrintPDF %TEMP%\VEPROMS ' +
cast(VersionID as varchar(5))+ ' ' + db_name() + ' ' +
Replace(Replace(Replace(Replace(ff.name,'/','_'),'\','_'),' ','_'),'-','_') + ' %PROMSEXE%'
from docversions dv
join folders ff on dv.folderID = ff.FolderID
order by versionID
OPEN Commands
FETCH NEXT FROM Commands INTO @CommandLine
WHILE @@FETCH_STATUS = 0
BEGIN
print @CommandLine
FETCH NEXT FROM Commands INTO @CommandLine
END
CLOSE Commands
DEALLOCATE Commands
PRINT 'GoTo :SkipEnd
Rem Skip Some DocVersions (Working Drafts)
:SkipEnd
Call :sc_MoveErrorLog ' + db_name() +'
Rem Record direcctly to C:\PDFs\%fdt%
echo %date% %time% Done >>C:\PDFS\%fdt%\Times.txt
Move %TEMP%\VEPROMS\%fdt%\*.* C:\PDFs\%fdt%
rd %TEMP%\VEPROMS\%fdt%
set GroupComment=
set fdt=
rem wait 20
goto:eof
:sc_setformats
echo loading formats from c:\proms\%5\promsformats
"C:\PROMS\%5\VEPROMS.exe" /UF=c:\proms\%5\promsformats /P= /DB=%ServerName%:%3
timeout /T 10
goto:eof
:sc_PrintPDF
echo %date% %time% Start %2 (%4) >>C:\PDFS\%fdt%\Times.txt
echo Creating PDFs for DocVersion %2 (%4) in %3
rem del %userprofile%\Documents\VEPROMS\%3*.txt
"C:\PROMS\%5\VEPROMS.exe" /P=%2 /DB=%ServerName%:%3 /NT /NC
rem -----------------------------------------------
rem Add /NW to exclude Word Output to the Meta File
rem -----------------------------------------------
echo %date% %time% Done %2 (%4) >>C:\PDFS\%fdt%\Times.txt
call :sc_AddText %3 %2 %4 %5
C:
cd %1
if not exist DebugP*.txt goto:sc_PrintPDFNoFiles
set fdt1=%fdt%\%3\%2_%4
md c:\PDFs\%fdt1%
del DOC_*.pdf > nul
move *.pdf c:\PDFs\%fdt1% > nul
move *.txt c:\PDFs\%fdt1% > nul
for /F %%c in (''cd'') do echo Files Moved to %%c\%fdt1%
set fdt1=
goto:eof
:sc_PrintPDFNoFiles
for /F %%d in (''cd'') do echo No Files to Move in %%d
goto:eof
:sc_FixTime
set fdt=%1%2%3_%5%6
if "%5%4"=="12PM" goto:sc_FixTimeDone
if "%5%4"=="12AM" set fdt=%1%2%3_00%6
if "%4"=="AM" goto:sc_FixTimeDone
if "%5"=="01" set fdt=%1%2%3_13%6
if "%5"=="02" set fdt=%1%2%3_14%6
if "%5"=="03" set fdt=%1%2%3_15%6
if "%5"=="04" set fdt=%1%2%3_16%6
if "%5"=="05" set fdt=%1%2%3_17%6
if "%5"=="06" set fdt=%1%2%3_18%6
if "%5"=="07" set fdt=%1%2%3_19%6
if "%5"=="08" set fdt=%1%2%3_20%6
if "%5"=="09" set fdt=%1%2%3_21%6
if "%5"=="10" set fdt=%1%2%3_22%6
if "%5"=="11" set fdt=%1%2%3_23%6
:sc_FixTimeDone
echo %2/%3/%1 %5:%6 %4 %fdt%
goto:eof
:sc_MoveErrorLog
move %userprofile%\Documents\VEPROMS\%1*.txt C:\PDFS\%fdt%\%1 > nul
goto:eof
:sc_AddText
for %%a in ("%userprofile%\Documents\VEPROMS\%1 *.txt") do Set fil=%%a
echo "=========== %4 Printing Complete %2 %3 ===========" >>"%fil%"
set fil=
goto :eof
oops:
TIMEOUT /T 60
'