44 // |
45 // |
45 { |
46 { |
46 test.Next( _L("Test File Handle Closure")); |
47 test.Next( _L("Test File Handle Closure")); |
47 |
48 |
48 TInt r = file.Replace(TheFs, fn, EFileWrite); |
49 TInt r = file.Replace(TheFs, fn, EFileWrite); |
49 test(r == KErrNone); |
50 test_KErrNone(r); |
50 r = TheFs.FileSystemName(fsname,aDrvNum); |
51 r = TheFs.FileSystemName(fsname,aDrvNum); |
51 test(r == KErrNone); |
52 test_KErrNone(r); |
52 buf = _L8("handle test23456"); |
53 buf = _L8("handle test23456"); |
53 r = file.Write(buf); |
54 r = file.Write(buf); |
54 test(r == KErrNone); |
55 test_KErrNone(r); |
55 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
56 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
56 User::WaitForRequest(stat); |
57 User::WaitForRequest(stat); |
57 test(stat.Int() == KErrNone); |
58 test(stat.Int() == KErrNone); |
58 |
59 |
59 // PDEF137626 Connectivity: Phone reboots automatically when connecting to PC via USB after pl |
60 // PDEF137626 Connectivity: Phone reboots automatically when connecting to PC via USB after pl |
60 // Check that writing data to a file when the drive is dismounted doesn't upset the file server |
61 // Check that writing data to a file when the drive is dismounted doesn't upset the file server |
61 r = file.Write(buf); |
62 r = file.Write(buf); |
62 test(r == KErrNotReady || r == KErrDisMounted); |
63 test_Value(r, r == KErrNotReady || r == KErrDisMounted); |
63 |
64 |
64 // PDEF091956 was a file server fault EFsDriveThreadError when the file |
65 // PDEF091956 was a file server fault EFsDriveThreadError when the file |
65 // handle was closed |
66 // handle was closed |
66 file.Close(); |
67 file.Close(); |
67 r = TheFs.MountFileSystem(fsname,aDrvNum); |
68 r = TheFs.MountFileSystem(fsname,aDrvNum); |
68 test(r == KErrNone); |
69 test_KErrNone(r); |
69 } |
70 } |
70 |
71 |
71 |
72 |
72 LOCAL_C void TestRequestCancelling(TInt aDrvNum) |
73 LOCAL_C void TestRequestCancelling(TInt aDrvNum) |
73 // |
74 // |
76 // |
77 // |
77 { |
78 { |
78 test.Next( _L("Test Request Cancelling") ); |
79 test.Next( _L("Test Request Cancelling") ); |
79 |
80 |
80 TInt r = TheFs.FileSystemName(fsname,aDrvNum); |
81 TInt r = TheFs.FileSystemName(fsname,aDrvNum); |
81 test(r == KErrNone); |
82 test_KErrNone(r); |
82 |
83 |
83 //*************************************** |
84 //*************************************** |
84 // first test with an open file handle |
85 // first test with an open file handle |
85 //*************************************** |
86 //*************************************** |
86 r = file.Replace(TheFs, fn, EFileWrite); |
87 r = file.Replace(TheFs, fn, EFileWrite); |
87 test(r == KErrNone); |
88 test_KErrNone(r); |
88 |
89 |
89 // up the priority of this thread so that we can queue 2 requests onto the drive thread - |
90 // up the priority of this thread so that we can queue 2 requests onto the drive thread - |
90 // i.e. a TFsNotifyDismount and a TFsCloseObject |
91 // i.e. a TFsNotifyDismount and a TFsCloseObject |
91 RThread thisThread; |
92 RThread thisThread; |
92 thisThread.SetPriority(EPriorityRealTime); |
93 thisThread.SetPriority(EPriorityRealTime); |
104 test(stat.Int() == KErrNone); |
105 test(stat.Int() == KErrNone); |
105 |
106 |
106 thisThread.SetPriority(EPriorityNormal); |
107 thisThread.SetPriority(EPriorityNormal); |
107 |
108 |
108 r = TheFs.MountFileSystem(fsname,aDrvNum); |
109 r = TheFs.MountFileSystem(fsname,aDrvNum); |
109 test(r == KErrNone); |
110 test_KErrNone(r); |
110 |
111 |
111 |
112 |
112 //*************************************** |
113 //*************************************** |
113 // now test with an open directory handle |
114 // now test with an open directory handle |
114 //*************************************** |
115 //*************************************** |
115 |
116 |
116 RDir dir; |
117 RDir dir; |
117 TFileName sessionPath; |
118 TFileName sessionPath; |
118 r=TheFs.SessionPath(sessionPath); |
119 r=TheFs.SessionPath(sessionPath); |
119 test(r==KErrNone); |
120 test_KErrNone(r); |
120 TFileName path=_L("?:\\*"); |
121 TFileName path=_L("?:\\*"); |
121 path[0]=sessionPath[0]; |
122 path[0]=sessionPath[0]; |
122 r=dir.Open(TheFs,path,KEntryAttMaskSupported); |
123 r=dir.Open(TheFs,path,KEntryAttMaskSupported); |
123 test(r==KErrNone); |
124 test_KErrNone(r); |
124 |
125 |
125 thisThread.SetPriority(EPriorityRealTime); |
126 thisThread.SetPriority(EPriorityRealTime); |
126 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
127 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
127 dir.Close(); |
128 dir.Close(); |
128 |
129 |
144 { |
145 { |
145 test.Next( _L("Test File Size Flushing with EFsDismountForceDismount") ); |
146 test.Next( _L("Test File Size Flushing with EFsDismountForceDismount") ); |
146 |
147 |
147 TInt size = 0; |
148 TInt size = 0; |
148 TInt r = file.Replace(TheFs, fn, EFileWrite); |
149 TInt r = file.Replace(TheFs, fn, EFileWrite); |
149 test(r == KErrNone); |
150 test_KErrNone(r); |
150 r = TheFs.FileSystemName(fsname,aDrvNum); |
151 r = TheFs.FileSystemName(fsname,aDrvNum); |
151 test(r == KErrNone); |
152 test_KErrNone(r); |
152 buf = _L8("size test9123456"); |
153 buf = _L8("size test9123456"); |
153 r = file.Write(buf); |
154 r = file.Write(buf); |
154 test(r == KErrNone); |
155 test_KErrNone(r); |
155 r = file.Flush(); |
156 r = file.Flush(); |
156 test(r == KErrNone); |
157 test_KErrNone(r); |
157 r = file.Write(buf); |
158 r = file.Write(buf); |
158 test(r == KErrNone); |
159 test_KErrNone(r); |
159 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
160 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountForceDismount); |
160 User::WaitForRequest(stat); |
161 User::WaitForRequest(stat); |
161 test(stat.Int() == KErrNone); |
162 test(stat.Int() == KErrNone); |
162 file.Close(); |
163 file.Close(); |
163 r = TheFs.MountFileSystem(fsname,aDrvNum); |
164 r = TheFs.MountFileSystem(fsname,aDrvNum); |
164 test(r == KErrNone); |
165 test_KErrNone(r); |
165 file.Open(TheFs, fn, EFileWrite); |
166 file.Open(TheFs, fn, EFileWrite); |
166 r = file.Size(size); |
167 r = file.Size(size); |
167 test(r == KErrNone); |
168 test_KErrNone(r); |
168 // PDEF091956 was, for example, a file size of 16 rather than 32. new file sizes were |
169 // PDEF091956 was, for example, a file size of 16 rather than 32. new file sizes were |
169 // not flushed for the forced dismount. this was only a problem with rugged fat off. |
170 // not flushed for the forced dismount. this was only a problem with rugged fat off. |
170 test(size == 32); |
171 test(size == 32); |
171 file.Close(); |
172 file.Close(); |
172 |
173 |
173 test.Next( _L("Test File Size Flushing with EFsDismountNotifyClients") ); |
174 test.Next( _L("Test File Size Flushing with EFsDismountNotifyClients") ); |
174 size = 0; |
175 size = 0; |
175 r = file.Replace(TheFs, fn, EFileWrite); |
176 r = file.Replace(TheFs, fn, EFileWrite); |
176 test(r == KErrNone); |
177 test_KErrNone(r); |
177 |
178 |
178 r = file.Write(buf); |
179 r = file.Write(buf); |
179 test(r == KErrNone); |
180 test_KErrNone(r); |
180 |
181 |
181 r = file.Write(buf); |
182 r = file.Write(buf); |
182 test(r == KErrNone); |
183 test_KErrNone(r); |
183 |
184 |
184 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountNotifyClients); |
185 TheFs.NotifyDismount(aDrvNum, stat, EFsDismountNotifyClients); |
185 User::WaitForRequest(stat); |
186 User::WaitForRequest(stat); |
186 |
187 |
187 test(stat.Int() == KErrNone); |
188 test(stat.Int() == KErrNone); |
188 file.Close(); |
189 file.Close(); |
189 |
190 |
190 r = TheFs.MountFileSystem(fsname,aDrvNum); |
191 r = TheFs.MountFileSystem(fsname,aDrvNum); |
191 test(r == KErrNone); |
192 test_KErrNone(r); |
192 file.Open(TheFs, fn, EFileWrite); |
193 file.Open(TheFs, fn, EFileWrite); |
193 r = file.Size(size); |
194 r = file.Size(size); |
194 test(r == KErrNone); |
195 test_KErrNone(r); |
195 test(size == 32); |
196 test(size == 32); |
196 file.Close(); |
197 file.Close(); |
197 } |
198 } |
198 #endif |
199 #endif |
199 |
200 |
266 { |
267 { |
267 // next test requires rugged fat off |
268 // next test requires rugged fat off |
268 TUint8 isRugged; |
269 TUint8 isRugged; |
269 TPtr8 pRugged(&isRugged,1,1); |
270 TPtr8 pRugged(&isRugged,1,1); |
270 r=TheFs.ControlIo(drvNum,KControlIoIsRugged,pRugged); |
271 r=TheFs.ControlIo(drvNum,KControlIoIsRugged,pRugged); |
271 test(r==KErrNone); |
272 test_KErrNone(r); |
272 if(isRugged) |
273 if(isRugged) |
273 { |
274 { |
274 r=TheFs.ControlIo(drvNum,KControlIoRuggedOff); |
275 r=TheFs.ControlIo(drvNum,KControlIoRuggedOff); |
275 test(r==KErrNone); |
276 test_KErrNone(r); |
276 } |
277 } |
277 |
278 |
278 TestFileSizeFlushing(drvNum); |
279 TestFileSizeFlushing(drvNum); |
279 |
280 |
280 // if originally rugged set system back to rugged |
281 // if originally rugged set system back to rugged |
281 if(isRugged) |
282 if(isRugged) |
282 { |
283 { |
283 r=TheFs.ControlIo(drvNum,KControlIoRuggedOn); |
284 r=TheFs.ControlIo(drvNum,KControlIoRuggedOn); |
284 test(r==KErrNone); |
285 test_KErrNone(r); |
285 } |
286 } |
286 } |
287 } |
287 else |
288 else |
288 { |
289 { |
289 test.Printf(_L("CallTestsL: Skip TestFileSizeFlushing - not a FAT filesystem.\n")); |
290 test.Printf(_L("CallTestsL: Skip TestFileSizeFlushing - not a FAT filesystem.\n")); |