jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / f_usage_tracking.inc
bloba53f6614ed64afc325919a708bbea2d6afd07c14
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 : Usage tracking
32 '\******************************************************************************
34 private const LOGFILE = "user\temp\Feedback\Current.csv"
36 '*******************************************************************************
38 testcase tUsageTracking1
40     printlog( "Test case 1: Presence of the Usage Tracking featureset" )
41     
42     ' Broken in CWS sb111'
43     ' Currently missing: Check for Office brand, StarOffice should always have OOoImp enabled'
44     
45     if ( not gOOoImprovementIsEnabled ) then
46         warnlog( "Usage tracking program is not enabled for this build" )
47     endif
48     
49 endcase
51 '*******************************************************************************
53 testcase tUsageTracking2
55     ' There must not be a log file to start with.
56     
57     printlog( "Test case 2: There must be no logfile present yet" )
58     
59     dim cLogFile as string
60         cLogFile = gOfficePath & LOGFILE
61         cLogFile = convertpath( cLogFile )
62         
63     if ( dir( cLogFile ) = "" ) then
64         printlog( "No log file. Good" )
65     else
66         warnlog( "Logfile not esxpected: " & cLogFile )
67         hDeleteFile( cLogFile )
68     endif
70 endcase
71    
72 '*******************************************************************************
73    
74 testcase tUsageTracking3
76     ' When the usage tracking mechanism is off we want the ui to reflect that.
78     printlog( "Test case 3: Presence of configuration tabpage and button states for disabled functionality" )
80     ToolsOptions
81     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
82     
83     kontext "TabOOoImprovement"
84     if ( TabOOoImprovement.exists( 1 ) ) then
85     
86         if ( not ParticipateNo.isChecked() ) then
87             warnlog( "#i98736# - UI should reflect current status for usage tracking: No" )
88         endif
89         
90         if ( ShowData.isEnabled() ) then
91             warnlog( "#i116461# - Show data button should not be enabled if nothing is logged" )
92     
93             ShowData.click()
94             
95             kontext "FilterAuswahl"
96             if ( FilterAuswahl.exists( 2 ) ) then
97                 warnlog( "Filter Selection dialog is not expected at this point, ")
98                 FilterAuswahl.cancel()
99             endif
100             
101             kontext "Active"
102             if ( Active.exists( 2 ) ) then
103                 warnlog( "Messagebox not required as control should not be enabled (see #i116461#)" )
104                 Active.ok()
105             
106                 kontext "TextImport"
107                 if ( TextImport.exists( 5 ) ) then
108                     warnlog( "There should be nothing to load if usage tracking is disabled" )
109                     
110                     TextImport.ok()
111                     
112                     kontext "CALC"
113                     if ( DocumentCalc.exists( 3 ) ) then
114                         hCloseDocument()
115                     else
116                         warnlog( "If a log exists it should open in a new Calc document" )
117                     endif
118                 endif
119             endif
120         endif
121     else
122         warnlog( "OOo Improvement Tabpage (Tools/Options) is missing" )
123     endif
124       
125     kontext "OptionenDlg"
126     OptionenDlg.cancel()
127     
128 endcase
130 '*******************************************************************************
132 testcase tUsageTracking4
134     ' When enabling usage tracking we want the mechanism to work at once
136     printlog( "Test case 4: Enable usage tracking, track something and display the log" )
137     
138     dim iDocumentType as integer
140     dim cLogFile as string
141         cLogFile = gOfficePath & LOGFILE
142         cLogFile = convertpath( cLogFile )
143         
144     dim lFileSize as long
145     
146     const FILE_SIZE = 2000
147     
148     hDeleteFile( cLogFile )
149     
150     ToolsOptions
151     
152     hToolsOptions( "StarOffice" , "IMPROVEMENT" )
153     
154     kontext "TabOOoImprovement"
155     if ( TabOOoImprovement.exists( 1 ) ) then
157         ParticipateYes.check()
158         
159         if ( hForceUsageTrackingOn() ) then
160         
161             kontext "OptionenDlg"
162             OptionenDlg.ok()
163            
164             ' Open different document types and modify them so something is logged
165             for iDocumentType = 1 to 4
166             
167                 hNumericDocType( iDocumentType )
168                 hNewDocument()
169                 hChangeDoc()
170                 hCloseDocument()
171                 
172             next iDocumentType 
173             
174             ToolsOptions
175             
176             hToolsOptions( "StarOffice" , "IMPROVEMENT" )
177             
178             kontext "TabOOoImprovement"
179             if ( TabOOoImprovement.exists( 1 ) ) then
180             
181                 lFileSize = hGetFileSizeAsLong( cLogFile )
182                 printlog( "Filesize is: " & lFileSize & " byte" )
183                 if ( lFileSize <> FILE_SIZE ) then
184                     warnlog( "The logfile does not have the expected size" )
185                     printlog( "Expected: " & FILE_SIZE )
186                     printlog( "Found...: " & lFileSize )
187                 endif
188                 
189                 ShowData.click()
190                 
191                 kontext "TextImport"
192                 if ( TextImport.exists( 3 ) ) then
193                 
194                     TextImport.ok()
195                     
196                     kontext "CALC"
197                     if ( DocumentCalc.exists( 3 ) ) then
198                         printlog( "Calc document is open" )
199                         if ( getDocumentCount <> 1 ) then
200                             warnlog( "Other, unexpected documents are open" )
201                         else
202                             hCloseDocument()
203                         endif
204                     else
205                         warnlog( "Logfile should open in a new spreadsheet document, document missing" )
206                     endif
207                     
208                 else
209                 
210                     warnlog( "Text Import (CSV) settings dialog did not open" )         
211                     
212                     kontext "Active"
213                     if ( Active.exists() ) then
214                         warnlog( "Unexpected messagebox" )
215                         printlog( Active.getText() )
216                         Active.ok()
217                     endif         
218                 endif
219                 
220                 kontext "TabOOoImprovement"
221                 ParticipateNo.click()
222                 
223                 kontext "Active"
224                 if ( Active.exists( 3 ) ) then
225                     Active.Yes()
226                 else
227                     qaerrorlog( "#i98739# - No delete option available when stopping usage tracking" )
228                 endif
229                 
230             endif
231         else
232             qaerrorlog( "#i98741# - Failed to force Usage Tracking on via API" )
233         endif
234             
235         kontext "OptionenDlg"
236         OptionenDlg.ok()
237         
238     endif
239     
240     hDeleteFile( cLogFile )
241              
242 endcase
244 '*******************************************************************************
246 function hForceUsageTrackingOn()
248     ' the usage tracking extension was disabled by force, in this function 
249     ' we force it back on as the switch in the UI is ignored
251     Dim oUnoOfficeConnection as object
252     Dim oUnoConfigurationAccess as object
253     Dim aPropertyValue(1) As new com.sun.star.beans.PropertyValue ' Array of pairs: Property with Value
254     Dim xViewRoot
255     
256     Dim oOOoImprovementController as object  ' Check presence of the OOo Improvement Program
257     
258     try
259         oUnoConfigurationAccess=oUnoOfficeConnection.createInstance("com.sun.star.configuration.ConfigurationProvider")
260         if (isNull(oUnoConfigurationAccess)) then       
261             warnlog (sFileFunction+"Couldn't create Configuration access")
262             exit function
263         endif
264         
265         aPropertyValue(0).Name="nodepath"
266         aPropertyValue(1).Name="lazywrite"
267         aPropertyValue(1).Value=False
269         oOOoImprovementController = oUnoOfficeConnection.createInstance( "com.sun.star.oooimprovement.CoreController" )
270         if ( isNull( oOOoImprovementController ) ) then
271             hForceUsageTrackingOn() = FALSE
272         else
273             aPropertyValue(0).Value="/org.openoffice.Office.Logging/OOoImprovement"
274             xViewRoot=oUnoConfigurationAccess.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess",aPropertyValue())
275             xViewRoot.replaceByName("EnablingAllowed", true )
276             xViewRoot.commitChanges()
277             if xViewRoot.hasPendingChanges() then
278                 qaErrorLog("Configuration not flushed: OOoImprovementProgram/InvitationAccepted: FALSE")
279             end if
280             xViewRoot.dispose()
281             hForceUsageTrackingOn() = TRUE
282         endif
284     catch
285         printlog( "Could not enable Usage Tracking via API" )
286     endcatch
288 end function