jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / filedlg_multiselection.inc
blob3d0cf3606260f32f5323476ba18fc8f2da694f38
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org is distributed in the hope that it will be useful,
16 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/******************************************************************************
28 '*  owner : gregor.hartmann@oracle.com
30 '*  short description : Select a huge number of documents and load
32 '\******************************************************************************
34 testcase tFiledlgMultiselection1()
36     printlog( "Stress test: Load a great number of documents simultaneously" )
37     
38     GLOBAL_USE_NEW_SLEEP = true
39     
40     ' This is a test requested by framework development to be used in multi-
41     ' user environments like Terminal Servers. It is used to quickly create
42     ' a certain load. Furthermore issues (mostly unconfirmed) have been reported
43     ' that loading files using multiselection might lead to a crash.
45     dim cWorkPath as string : cWorkPath = hGetWorkPath() & "multiselection"
46     dim cMsg as string
47         
48     dim iCurrentFile as integer
49     dim iOpenDocuments as integer
50     dim lTime as long
51     dim lWait as long
52     dim lTimeSum as long
53     dim iCurrentTime as long
54     
55     
56     dim iDocType as integer
57     dim iDocument as integer
58     dim cFilter( 4 ) as string
59         cFilter( 1 ) = "writer8"
60         cFilter( 2 ) = "calc8"
61         cFilter( 3 ) = "impress8"
62         cFilter( 4 ) = "draw8"
63         
64     dim cFile as string
65         
66     dim brc as boolean
67     
68     const TESTFILE_COUNT = 60 ' the number of documents in cWorkPath
69     const TESTFILE_TIMEOUT = 480000
71     ' Minimum cleanup
72     while( getDocumentCount > 0 ) 
73         hCloseDocument()
74     wend
76     ' create the workdirectory
77     mkdir( cWorkPath )
78     
79     ' dynamically create a bulk of files to be written to the work directory
80     lTimeSum = 0
81     
82     for iDocType = 1 to 4
83         hNumericDocType( iDocType )
84         hNewDocument()
85         hChangeDoc()
86         lWait = 0
87         for iDocument = 1 to 15
88             cFile = cWorkPath & "\" & "test_" & cFilter( iDocType ) & iDocument
89             lTime = getSystemTicks
90             hFileSaveAsWithFilterKill( cFile, cFilter( iDocType ) )
91             lWait = lWait + getSystemTicks - lTime
92         next iDocument
93         hCloseDocument()
94         printlog( "Total time for saving 15 documents: " & lWait & " ms" )
95         lTimeSum = lTimeSum + lWait
96     next iDocType
97     
98     if ( getDocumentCount > 0 ) then
99         warnlog( "Not all files were saved and closed" )
100         goto endsub
101     endif
102     
103     printlog( "Time for saving 60 documents: " & lTimeSum & " ms" )
104     printlog( "Average time per document...: " & lTimeSum / TESTFILE_COUNT & " ms" )
105             
106     printlog( "FileOpen" )
107     FileOpen
109     printlog( "Go to the workdirectory: " & cWorkPath )
110     kontext "OeffnenDlg"
111     if ( OeffnenDlg.exists( 1 ) ) then
112     
113         DateiName.typeKeys( cWorkPath )
114         Oeffnen.click()
115         
116         kontext "Active"
117         if ( active.exists( 2 ) ) then
118                 cMsg = active.getText()
119                 cMsg = hRemoveLineBreaks( cMsg )
120                 warnlog( "Unexpected messagebox: " & cMsg )
121                 active.ok()
122                 kontext "OeffnenDlg"
123                 if ( OeffnenDlg.exists() ) then
124                 OeffnenDlg.cancel()
125             else
126                 warnlog( "File Open dialog is not visible" )
127             endif
128                 goto endsub
129         endif
130         
131         printlog( "Select all documents and load them simultaneously" )
132         kontext "OeffnenDlg"
133         if ( OeffnenDlg.exists() ) then
134         
135             DateiAuswahl.typeKeys( "<HOME>" )
136             DateiAuswahl.typeKeys( "<SHIFT END>" )
137             Oeffnen.Click()
138          
139             lTime = GetSystemTicks
140             iOpenDocuments = 0   
141             while ( iOpenDocuments < TESTFILE_COUNT )
142                 iOpenDocuments = getDocumentCount()
143                 iCurrentTime = getSystemTicks - lTime
144                 
145                 ' exit the hard way
146                 if ( iCurrentTime > TESTFILE_TIMEOUT ) then
147                     warnlog( "Loading files max wait time exceed (" & _
148                               TESTFILE_TIMEOUT/1000 & "), aborting" )
149                     goto endsub
150                 endif
151             wend
152             
153             if ( iCurrentTime > 120000 ) then
154                 'Closed issue: qaerrorlog( "#i105289# Slow loading of files, should be less than 120 seconds on all platforms" )
155                 printlog( "Slow file loading (exceeds 120 seconds)" )
156             endif
157             lWait = getSystemTicks - lTime ' time diff
159             printlog( "All documents loaded in " & lWait & " ms" )
160             sleep()
161             
162             printlog( "Starting to close all documents" )
163             for iCurrentFile = 1 to TESTFILE_COUNT
164                 FileClose
165                 sleep()
166             next iCurrentFile
167             printlog( "Finished closing documents" )
168             
169             if ( getDocumentCount > 0 ) then
170                 warnlog( "Not all documents were closed." )
171                 iOpenDocuments = getDocumentCount
172                 for iCurrentFile = 1 to iOpenDocuments - 1
173                         hCloseDocument()
174                 next iCurrentFile
175             else
176                 printlog( "All documents have been closed. Test succeeded." )
177             endif
178             
179             printlog( "Deleting work files..." )
180             for iDocType = 1 to 4
181                 hNumericDocType( iDocType )
182                 for iDocument = 1 to 15
183                     cFile = cWorkPath & "\" & "test_" & cFilter( iDocType ) & iDocument 
184                     hDeleteFile( cFile )
185                 next iDocument
186             next iDocType
188             printlog( "Removing temporary work directory" )
189             rmdir( cWorkPath )    
190         else
191             warnlog( "File Open dialog is not visible" )
192         endif
193     else
194         warnlog( "File Open dialog did not open." )
195     endif
197 endcase