Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/javax/rmi/ssl/SocketFactoryTest.java
38839 views
/*1* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 4932837 658223526* @summary Test SslRMI[Client|Server]SocketFactory equals() and hashCode().27* @author Daniel Fuchs28*29* @run main SocketFactoryTest30*/3132import java.io.PrintWriter;33import java.io.IOException;34import java.io.Serializable;35import java.io.ObjectInputStream;36import java.io.ObjectOutputStream;37import java.io.ByteArrayInputStream;38import java.io.ByteArrayOutputStream;39import java.util.Map;40import java.util.HashMap;41import javax.net.ssl.SSLContext;42import javax.rmi.ssl.SslRMIClientSocketFactory;43import javax.rmi.ssl.SslRMIServerSocketFactory;4445public class SocketFactoryTest {4647public static final String[] ciphersuite =48new String[] { "SSL_RSA_WITH_NULL_MD5" };4950public static final String[] protocol =51new String[] { "TLSv1" };5253public static class MySslRMIClientSocketFactory54extends SslRMIClientSocketFactory {55}5657public static class MySslRMIServerSocketFactory58extends SslRMIServerSocketFactory {59public MySslRMIServerSocketFactory() {60super();61}62public MySslRMIServerSocketFactory(String[] ciphers,63String[] protocols,64boolean need) {65super(ciphers, protocols, need);66}67public MySslRMIServerSocketFactory(SSLContext context,68String[] ciphers,69String[] protocols,70boolean need) {71super(context, ciphers, protocols, need);72}73}7475public static Object serializeAndClone(Object o) throws Exception {76System.out.println("Serializing object: " + o);77final ByteArrayOutputStream obytes =78new ByteArrayOutputStream();79final ObjectOutputStream ostr =80new ObjectOutputStream(obytes);81ostr.writeObject(o);82ostr.flush();8384System.out.println("Deserializing object");85final ByteArrayInputStream ibytes =86new ByteArrayInputStream(obytes.toByteArray());87final ObjectInputStream istr =88new ObjectInputStream(ibytes);89return istr.readObject();90}9192public static void testEquals(Object a, Object b, boolean expected) {93final boolean found = a.equals(b);94if (found != expected)95throw new RuntimeException("testEquals failed: objects are " +96((found)?"equals":"not equals"));97if (found && a.hashCode()!=b.hashCode())98throw new RuntimeException("testEquals failed: objects are " +99"equals but their hashcode differ");100}101102public static void main(String[] args) {103try {104System.out.println("SocketFactoryTest START.");105106final SSLContext context = SSLContext.getInstance("SSL");107context.init(null, null, null);108109final SslRMIClientSocketFactory client1 =110new SslRMIClientSocketFactory();111final SslRMIClientSocketFactory client2 =112new SslRMIClientSocketFactory();113final SslRMIClientSocketFactory client11 =114(SslRMIClientSocketFactory) serializeAndClone(client1);115final SslRMIClientSocketFactory client21 =116(SslRMIClientSocketFactory) serializeAndClone(client2);117final SslRMIServerSocketFactory server1 =118new SslRMIServerSocketFactory();119final SslRMIServerSocketFactory server2 =120new SslRMIServerSocketFactory(null,121null,122false);123final SslRMIServerSocketFactory server3 =124new SslRMIServerSocketFactory(ciphersuite,125null,126false);127final SslRMIServerSocketFactory server4 =128new SslRMIServerSocketFactory(null,129protocol,130false);131final SslRMIServerSocketFactory server5 =132new SslRMIServerSocketFactory(null,133null,134true);135final SslRMIServerSocketFactory server6 =136new SslRMIServerSocketFactory(null,137null,138null,139false);140final SslRMIServerSocketFactory server7 =141new SslRMIServerSocketFactory(SSLContext.getDefault(),142null,143null,144false);145final SslRMIServerSocketFactory server8 =146new SslRMIServerSocketFactory(null,147null,148null,149true);150final SslRMIServerSocketFactory server9 =151new SslRMIServerSocketFactory(SSLContext.getDefault(),152null,153null,154true);155final SslRMIServerSocketFactory server10 =156new SslRMIServerSocketFactory(context,157null,158null,159true);160final MySslRMIClientSocketFactory subclient1 =161new MySslRMIClientSocketFactory();162final MySslRMIClientSocketFactory subclient2 =163new MySslRMIClientSocketFactory();164final MySslRMIServerSocketFactory subserver1 =165new MySslRMIServerSocketFactory();166final MySslRMIServerSocketFactory subserver2 =167new MySslRMIServerSocketFactory(null,168null,169false);170final MySslRMIServerSocketFactory subserver3 =171new MySslRMIServerSocketFactory(ciphersuite,172null,173false);174final MySslRMIServerSocketFactory subserver4 =175new MySslRMIServerSocketFactory(null,176protocol,177false);178final MySslRMIServerSocketFactory subserver5 =179new MySslRMIServerSocketFactory(null,180null,181true);182final MySslRMIServerSocketFactory subserver6 =183new MySslRMIServerSocketFactory(null,184ciphersuite,185null,186false);187final MySslRMIServerSocketFactory subserver7 =188new MySslRMIServerSocketFactory(SSLContext.getDefault(),189ciphersuite,190null,191false);192final MySslRMIServerSocketFactory subserver8 =193new MySslRMIServerSocketFactory(context,194null,195null,196true);197198// clients199System.out.println("testEquals(client1,client1,true)");200testEquals(client1,client1,true);201System.out.println("testEquals(client1,client2,true)");202testEquals(client1,client2,true);203System.out.println("testEquals(client1,client11,true)");204testEquals(client1,client11,true);205System.out.println("testEquals(client1,client21,true)");206testEquals(client1,client21,true);207System.out.println("testEquals(client11,client21,true)");208testEquals(client11,client21,true);209System.out.println("testEquals(client1,null,false)");210testEquals(client1,null,false);211System.out.println("testEquals(client1,server1,false)");212testEquals(client1,server1,false);213System.out.println("testEquals(client21,server2,false)");214testEquals(client21,server2,false);215System.out.println("testEquals(client1,new Object(),false)");216testEquals(client1,new Object(),false);217218// servers219System.out.println("testEquals(server1,server1,true)");220testEquals(server1,server1,true);221System.out.println("testEquals(server2,server2,true)");222testEquals(server2,server2,true);223System.out.println("testEquals(server3,server3,true)");224testEquals(server3,server3,true);225System.out.println("testEquals(server4,server4,true)");226testEquals(server4,server4,true);227System.out.println("testEquals(server5,server5,true)");228testEquals(server5,server5,true);229System.out.println("testEquals(server1,server2,true)");230testEquals(server1,server2,true);231System.out.println("testEquals(server1,server3,false)");232testEquals(server1,server3,false);233System.out.println("testEquals(server2,server3,false)");234testEquals(server2,server3,false);235System.out.println("testEquals(server3,server4,false)");236testEquals(server3,server4,false);237System.out.println("testEquals(server4,server5,false)");238testEquals(server4,server5,false);239System.out.println("testEquals(server6,server7,false)");240testEquals(server6,server7,false);241System.out.println("testEquals(server8,server9,false)");242testEquals(server8,server9,false);243System.out.println("testEquals(server9,server10,false)");244testEquals(server9,server10,false);245System.out.println("testEquals(server2,server6,true)");246testEquals(server2,server6,true);247System.out.println("testEquals(server2,server7,false)");248testEquals(server2,server7,false);249System.out.println("testEquals(server5,server8,true)");250testEquals(server5,server8,true);251System.out.println("testEquals(server5,server9,false)");252testEquals(server5,server9,false);253System.out.println("testEquals(server1,null,false)");254testEquals(server1,null,false);255System.out.println("testEquals(server2,null,false)");256testEquals(server2,null,false);257System.out.println("testEquals(server3,null,false)");258testEquals(server3,null,false);259System.out.println("testEquals(server1,client2,false)");260testEquals(server1,client2,false);261System.out.println("testEquals(server2,client11,false)");262testEquals(server2,client11,false);263System.out.println("testEquals(server1,new Object(),false)");264testEquals(server1,new Object(),false);265266// client subclass267System.out.println("testEquals(subclient1,subclient1,true)");268testEquals(subclient1,subclient1,true);269System.out.println("testEquals(subclient1,subclient2,true)");270testEquals(subclient1,subclient2,true);271System.out.println("testEquals(subclient1,client1,false)");272testEquals(subclient1,client1,false);273System.out.println("testEquals(client1,subclient1,false)");274testEquals(client1,subclient1,false);275System.out.println("testEquals(subclient1,null,false)");276testEquals(subclient1,null,false);277System.out.println("testEquals(subclient1,server1,false)");278testEquals(subclient1,server1,false);279System.out.println("testEquals(server1,subclient1,false)");280testEquals(server1,subclient1,false);281System.out.println("testEquals(subclient2,subserver2,false)");282testEquals(subclient1,subserver2,false);283System.out.println("testEquals(subclient1,new Object(),false)");284testEquals(subclient1,new Object(),false);285286// server subclass287System.out.println("testEquals(subserver1,subserver1,true)");288testEquals(subserver1,subserver1,true);289System.out.println("testEquals(subserver2,subserver2,true)");290testEquals(subserver2,subserver2,true);291System.out.println("testEquals(subserver3,subserver3,true)");292testEquals(subserver3,subserver3,true);293System.out.println("testEquals(subserver4,subserver4,true)");294testEquals(subserver4,subserver4,true);295System.out.println("testEquals(subserver5,subserver5,true)");296testEquals(subserver5,subserver5,true);297System.out.println("testEquals(subserver1,subserver2,true)");298testEquals(subserver1,subserver2,true);299System.out.println("testEquals(subserver1,subserver3,false)");300testEquals(subserver1,subserver3,false);301System.out.println("testEquals(subserver2,subserver3,false)");302testEquals(subserver2,subserver3,false);303System.out.println("testEquals(subserver3,subserver4,false)");304testEquals(subserver3,subserver4,false);305System.out.println("testEquals(subserver4,subserver5,false)");306testEquals(subserver4,subserver5,false);307System.out.println("testEquals(subserver3,subserver6,true)");308testEquals(subserver3,subserver6,true);309System.out.println("testEquals(subserver3,subserver7,false)");310testEquals(subserver3,subserver7,false);311System.out.println("testEquals(subserver1,server1,false)");312testEquals(subserver1,server1,false);313System.out.println("testEquals(server1,subserver1,false)");314testEquals(server1,subserver1,false);315System.out.println("testEquals(subserver2,server2,false)");316testEquals(subserver2,server2,false);317System.out.println("testEquals(server2,subserver2,false)");318testEquals(server2,subserver2,false);319System.out.println("testEquals(subserver3,server3,false)");320testEquals(subserver3,server3,false);321System.out.println("testEquals(server3,subserver3,false)");322testEquals(server3,subserver3,false);323System.out.println("testEquals(subserver4,server4,false)");324testEquals(subserver4,server4,false);325System.out.println("testEquals(server4,subserver4,false)");326testEquals(server4,subserver4,false);327System.out.println("testEquals(subserver5,server5,false)");328testEquals(subserver5,server5,false);329System.out.println("testEquals(server5,subserver5,false)");330testEquals(server5,subserver5,false);331System.out.println("testEquals(server10,subserver8,false)");332testEquals(server10,subserver8,false);333System.out.println("testEquals(subserver8,server10,false)");334testEquals(subserver8,server10,false);335System.out.println("testEquals(subserver1,null,false)");336testEquals(subserver1,null,false);337System.out.println("testEquals(subserver1,client2,false)");338testEquals(subserver1,client2,false);339System.out.println("testEquals(subserver1,subclient2,false)");340testEquals(subserver1,subclient2,false);341System.out.println("testEquals(client1,subserver2,false)");342testEquals(client1,subserver2,false);343System.out.println("testEquals(subserver1,new Object(),false)");344testEquals(subserver1,new Object(),false);345346System.out.println("SocketFactoryTest PASSED.");347} catch (Exception x) {348System.out.println("SocketFactoryTest FAILED: " + x);349x.printStackTrace();350System.exit(1);351}352}353}354355356