44import java .net .UnknownHostException ;
55import org .dcache .nfs .ChimeraNFSException ;
66import org .dcache .nfs .v4 .xdr .COMPOUND4args ;
7+ import org .dcache .nfs .v4 .xdr .nfs4_prot ;
78import org .dcache .nfs .v4 .xdr .nfs_fh4 ;
89import org .dcache .nfs .vfs .Inode ;
910import org .junit .Test ;
@@ -51,6 +52,15 @@ public void testLeaseUpdateForV40Client() throws UnknownHostException, ChimeraNF
5152
5253 stateid4 stateid = mock (stateid4 .class );
5354 NFSv4StateHandler stateHandler = mock (NFSv4StateHandler .class );
55+ NFS4Client client = mock (NFS4Client .class );
56+ NFSv41Session session = mock (NFSv41Session .class );
57+ FileTracker fileTracker = mock (FileTracker .class );
58+
59+ when (stateHandler .getFileTracker ()).thenReturn (fileTracker );
60+ when (fileTracker .getShareAccess (any (), any (), any ())).thenReturn (nfs4_prot .OPEN4_SHARE_ACCESS_WRITE );
61+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
62+ when (session .getClient ()).thenReturn (client );
63+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
5464
5565 when (vfs .getattr (any ())).thenReturn (fileStat );
5666 when (vfs .write (any (), any (), anyLong (), any ()))
@@ -68,6 +78,7 @@ public void testLeaseUpdateForV40Client() throws UnknownHostException, ChimeraNF
6878 .withCall (generateRpcCall ())
6979 .build ();
7080
81+ context .setSession (session );
7182 execute (context , writeArgs );
7283 verify (stateHandler , times (1 )).updateClientLeaseTime (stateid );
7384 }
@@ -77,6 +88,15 @@ public void testNoLeaseUpdateForV41Client() throws UnknownHostException, Chimera
7788
7889 stateid4 stateid = mock (stateid4 .class );
7990 NFSv4StateHandler stateHandler = mock (NFSv4StateHandler .class );
91+ NFS4Client client = mock (NFS4Client .class );
92+ NFSv41Session session = mock (NFSv41Session .class );
93+ FileTracker fileTracker = mock (FileTracker .class );
94+
95+ when (stateHandler .getFileTracker ()).thenReturn (fileTracker );
96+ when (fileTracker .getShareAccess (any (), any (), any ())).thenReturn (nfs4_prot .OPEN4_SHARE_ACCESS_WRITE );
97+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
98+ when (session .getClient ()).thenReturn (client );
99+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
80100
81101 when (vfs .getattr (any ())).thenReturn (fileStat );
82102 when (vfs .write (any (), any (), anyLong (), any ()))
@@ -94,6 +114,7 @@ public void testNoLeaseUpdateForV41Client() throws UnknownHostException, Chimera
94114 .withCall (generateRpcCall ())
95115 .build ();
96116
117+ context .setSession (session );
97118 execute (context , writeArgs );
98119 verify (stateHandler , never ()).updateClientLeaseTime (stateid );
99120 }
@@ -103,6 +124,16 @@ public void testReturnWriteVerifier() throws UnknownHostException, ChimeraNFSExc
103124
104125 stateid4 stateid = mock (stateid4 .class );
105126 NFSv4StateHandler stateHandler = mock (NFSv4StateHandler .class );
127+ NFS4Client client = mock (NFS4Client .class );
128+ NFSv41Session session = mock (NFSv41Session .class );
129+ FileTracker fileTracker = mock (FileTracker .class );
130+
131+ when (stateHandler .getFileTracker ()).thenReturn (fileTracker );
132+ when (fileTracker .getShareAccess (any (), any (), any ())).thenReturn (nfs4_prot .OPEN4_SHARE_ACCESS_WRITE );
133+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
134+ when (session .getClient ()).thenReturn (client );
135+ when (stateHandler .getClientIdByStateId (any ())).thenReturn (client );
136+
106137 verifier4 verifier = mock (verifier4 .class );
107138
108139 when (vfs .getattr (any ())).thenReturn (fileStat );
@@ -121,6 +152,7 @@ public void testReturnWriteVerifier() throws UnknownHostException, ChimeraNFSExc
121152 .withRebootVerifier (verifier )
122153 .withCall (generateRpcCall ())
123154 .build ();
155+ context .setSession (session );
124156
125157 COMPOUND4res res = execute (context , writeArgs );
126158 assertSame (verifier , res .resarray .get (1 ).opwrite .resok4 .writeverf );
0 commit comments