Merge "Check mOwnedByTransform to avoid DELSA on SPI" am: 94d8fa0da6
am: af4c28192c
Change-Id: Ie505e32e6f3bef3fe39198396a40a2b534e2bcda
This commit is contained in:
@@ -23,6 +23,7 @@ import static org.mockito.Matchers.anyInt;
|
|||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Matchers.eq;
|
import static org.mockito.Matchers.eq;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -319,6 +320,30 @@ public class IpSecServiceParameterizedTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReleaseOwnedSpi() throws Exception {
|
||||||
|
IpSecConfig ipSecConfig = new IpSecConfig();
|
||||||
|
addDefaultSpisAndRemoteAddrToIpSecConfig(ipSecConfig);
|
||||||
|
addAuthAndCryptToIpSecConfig(ipSecConfig);
|
||||||
|
|
||||||
|
IpSecTransformResponse createTransformResp =
|
||||||
|
mIpSecService.createTransform(ipSecConfig, new Binder());
|
||||||
|
IpSecService.UserRecord userRecord =
|
||||||
|
mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid());
|
||||||
|
assertEquals(1, userRecord.mSpiQuotaTracker.mCurrent);
|
||||||
|
mIpSecService.releaseSecurityParameterIndex(ipSecConfig.getSpiResourceId());
|
||||||
|
verify(mMockNetd, times(0))
|
||||||
|
.ipSecDeleteSecurityAssociation(
|
||||||
|
eq(createTransformResp.resourceId),
|
||||||
|
anyString(),
|
||||||
|
anyString(),
|
||||||
|
eq(TEST_SPI),
|
||||||
|
anyInt(),
|
||||||
|
anyInt());
|
||||||
|
// quota is not released until the SPI is released by the Transform
|
||||||
|
assertEquals(1, userRecord.mSpiQuotaTracker.mCurrent);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteTransform() throws Exception {
|
public void testDeleteTransform() throws Exception {
|
||||||
IpSecConfig ipSecConfig = new IpSecConfig();
|
IpSecConfig ipSecConfig = new IpSecConfig();
|
||||||
@@ -329,7 +354,7 @@ public class IpSecServiceParameterizedTest {
|
|||||||
mIpSecService.createTransform(ipSecConfig, new Binder());
|
mIpSecService.createTransform(ipSecConfig, new Binder());
|
||||||
mIpSecService.deleteTransform(createTransformResp.resourceId);
|
mIpSecService.deleteTransform(createTransformResp.resourceId);
|
||||||
|
|
||||||
verify(mMockNetd)
|
verify(mMockNetd, times(1))
|
||||||
.ipSecDeleteSecurityAssociation(
|
.ipSecDeleteSecurityAssociation(
|
||||||
eq(createTransformResp.resourceId),
|
eq(createTransformResp.resourceId),
|
||||||
anyString(),
|
anyString(),
|
||||||
@@ -342,6 +367,21 @@ public class IpSecServiceParameterizedTest {
|
|||||||
IpSecService.UserRecord userRecord =
|
IpSecService.UserRecord userRecord =
|
||||||
mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid());
|
mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid());
|
||||||
assertEquals(0, userRecord.mTransformQuotaTracker.mCurrent);
|
assertEquals(0, userRecord.mTransformQuotaTracker.mCurrent);
|
||||||
|
assertEquals(1, userRecord.mSpiQuotaTracker.mCurrent);
|
||||||
|
|
||||||
|
mIpSecService.releaseSecurityParameterIndex(ipSecConfig.getSpiResourceId());
|
||||||
|
// Verify that ipSecDeleteSa was not called when the SPI was released because the
|
||||||
|
// ownedByTransform property should prevent it; (note, the called count is cumulative).
|
||||||
|
verify(mMockNetd, times(1))
|
||||||
|
.ipSecDeleteSecurityAssociation(
|
||||||
|
anyInt(),
|
||||||
|
anyString(),
|
||||||
|
anyString(),
|
||||||
|
anyInt(),
|
||||||
|
anyInt(),
|
||||||
|
anyInt());
|
||||||
|
assertEquals(0, userRecord.mSpiQuotaTracker.mCurrent);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
userRecord.mTransformRecords.getRefcountedResourceOrThrow(
|
userRecord.mTransformRecords.getRefcountedResourceOrThrow(
|
||||||
createTransformResp.resourceId);
|
createTransformResp.resourceId);
|
||||||
|
|||||||
Reference in New Issue
Block a user