You are on page 1of 30

CHAPTER 1

Architecture Diagram
Classified Replica Determinati Minimum subtree determination Mandatory replica determination Read replica set Update Receiver Ref req Req.data Update trans req. data req. data Replica Local Log Update trans Update trans
Propagator

Replica

Update Trans

Client Refer req. Update req.

Front end Node

update trans

Replica

Replica

Replica

Propagato r

Update Trans. Client Refer Req Update Req Ref. req Update
Receiver

Front Node

New Data Local Log

Req

Fig 1:-System Architecture used in view Divergence control 1

CHAPTER 2

Implementation Detail
2.1 DATABASE DESIGN:Data Model is the process of creating a logical representation of the structure of a database. A data model is a model of users model of their business. It is the most important task performed by the developer- the entire database and application that access this database based on it. Two important models that are used in database design are - E-R Model and Relational Model. In E-R model data is represented by entities, and relationship is defined between them. With Relational Model entities and relationship follow a strict guideline. Usually E-R model is developed first, then it is transformed into Relational Model. Entity-relationship model (ERM) is an abstract and conceptual representation of data. Entity-relationship modeling is a database modeling method, used to produce a type of conceptual schema of a system, often a relational database, and its requirements in a top-down fashion. Diagrams created by this process are called entity-relationship diagrams, ER diagrams. In Bank database design there are four entities Bank-branch, account, customer and loan. Each Branch is identified by its unique branch no. There are many attribute associated with each branch, like branch no, address, state etc. There many accounts at each branch. There is N:1 relationship between account and branch. Each account entity is identified by its unique account no. Account entity contains many more attribute like balance, opening date, closing date, interest rate, and type of account. Each account can be associated with one or more than one customer (joint account). A customer can have more than one account. So there is M:N relationship between account and customer entity. There is one more relationship between account and customer i.e transaction. Some attribute are also associated with the transaction relationshiptransaction date, time and amount. One customer can take more than one loan at a time and one loan can be issued to more than one customer, an organization, so there is M:N relationship between customer and loan entity. One branch can issue more than one loan and one loan can be issued from only one branch, so there is 1:N relationship between branch and loan. Each loan is identified by its unique loan no.

2.1.1 ENTITY-RELATIONSHIP MODEL:P_locat ion incom e L_tenu re Home loan Person al loan

O_cotr ib.

duration

Education al loan

Inst.

addr cours e

emi d Loan no amou nt typ e ROI

T_expen ses

N N

I_dat e loan
Lo a

Bo r

ro

N
Acc_ no

ns

M 1
Branch_ no

sex

name dob Customer phon e


H

ol d

1
s

Addres s

BankBranch

add r

occu p

ema N il

name

Tr1 ac an n tio s

Accoun N

N
Acc_n o balan ce

Ac nt co u s

Close date type rate Ope n date

2.2 DETAIL OF DATA SET USED:Table No 1 Table Name- CUSTOMER Name Null? Type ----------------------------------------- -------- ---------------------------CID NOT NULL VARCHAR2 (10) FNAME VARCHAR2 (15) MNAME VARCHAR2 (15) LNAME VARCHAR2 (15) DOB DATE F_NAME VARCHAR2 (20) M_STATUS VARCHAR2 (10) ADD1 VARCHAR2 (30) ADD2 VARCHAR2 (30) CITY VARCHAR2 (15) P_CODE NUMBER (6) STATE VARCHAR2 (20) M_NO NUMBER (12) EMAIL VARCHAR2 (30) OCCUPATION VARCHAR2 (20) RELIGION VARCHAR2 (20) GENDER VARCHAR2 (7) Table No 2 Table Name - ACCOUNT Name Null? Type ----------------------------------------- -------- ---------------------------ACC_NO NOT NULL VARCHAR2 (15) CID VARCHAR2 (10) BALANCE NUMBER (10) OPEN_DATE DATE CLOSE_DATE DATE I_RATE NUMBER (5,2) TYPE VARCHAR2 (10) BRANCH_NO VARCHAR2 (10)

Table No 3 Table Name - BRANCH Name Null? Type ----------------------------------------- -------- ---------------------------BRANCH_NO NOT NULL VARCHAR2 (10) B_ADDR1 VARCHAR2 (30) B_ADDR2 VARCHAR2 (30) B_CITY VARCHAR2 (20) B_STATE VARCHAR2 (30) Table No 4 Table Name - TRANSACTION Name Null? Type ----------------------------------------- -------- ---------------------------CID NOT NULL VARCHAR2 (10) ACC_NO NOT NULL VARCHAR2 (15) T_DATE NOT NULL DATE T_TIME NOT NULL VARCHAR2 (10) T_AMT NUMBER (8) T_TYPE VARCHAR2 (10) Table No 5 Table Name - LOAN Name Null? Type ----------------------------------------- -------- ---------------------------LOAN_NO NOT NULL VARCHAR2 (15) BRANCH_NO VARCHAR2 (10) LOAN_AMOUNT NUMBER (9) LOAN_TYPE VARCHAR2 (12) INTEREST VARCHAR2 (4) ISSUE_DATE DATE

Table No 6 Table Name - HOME LOAN Name Null? Type ----------------------------------------- -------- ---------------------------LOAN_NO NOT NULL VARCHAR2 (15) PROPERTY_LOCATION VARCHAR2 (60) INCOME NUMBER (8) LOAN_TENURE NUMBER (2) EMI NUMBER (5)

Table No 7 Table Name - EDUCATION LOAN Name Null? Type ----------------------------------------- -------- ---------------------------LOAN_NO NOT NULL VARCHAR2 (15) COURSE VARCHAR2 (25) COURSE_DURATION NUMBER (2) INST_NAME VARCHAR2 (30) ADDRESS VARCHAR2 (60) CITY VARCHAR2 (20) PIN NUMBER (6) STATE VARCHAR2 (20) TOTAL_EXPENSE NUMBER (8) OWN_EXPENSE NUMBER (8) Table No 8 Table Name - LOAN HOLDER Name Null? Type ----------------------------------------- -------- ---------------------------CID NOT NULL VARCHAR2 (10) LOAN_NO NOT NULL VARCHAR2 (15)

2.3 METHODOLOGIES USED FOR DATA VALIDATION:JavaScript is used for validating the data taken at client site. 1) Name should only contain alphabet and space. Digit and special symbol are not allowed in name. 2) City should only contain alphabet and space. 3) Phone only contain digit and + symbol is allowed. 4) In email validation @ symbol are checked. Only one @ symbol should present. After @ at least one . should be present. @ and . Must not be continuous.@ and . Should not be first and last character.

2.4 PSEUDOCODE OF IMPLEMENTED ALGORITHM:2.4.1 Creating distributed environment:In this module ,distributed environment is created. If some data is not present at local database, user can access that data from the remote database. On Windows, Oracle Net Manager Program is used to create a new net service entry in tnsnames.ora file as follows:1. Start Oracle Net Manager by clicking the Start button and then selecting Programs, Oracle, Configuration and Migration Tools, and Net Manager. 2. From the Local tree, select Service Naming and click the plus (+) on the left hand side of the page. The Net Service Name Wizard appears. 3. Enter a net service name to identify it. The name will appear under the Service Naming folder. Click Next. 4. Select the protocol to use to connect to database. For example, accept the default of TCP/IP (Internet Protocol). The database listener must be configured to use the same network protocol. Click Next. 5. Enter the host name of the database machine, such as coconuts.island.com, and the port number. Click Next. 6. Enter either the database service name or the database SID. In the Connection Type list, select Shared Server, Dedicated Server, or Database Default. Shared connections require database to be running in shared mode. If Dedicated is chosen, then the database dedicates a single server process to serve connection.. Click Next. 7. The last screen of the wizard enables us to test the connection by using the information entered by us. To do so, Test button is clicked. The wizard tells us if the connection test succeeds or not. 8. Click Finish. The new service appears under the Service Naming folder. We can view or modify the configuration for the highlighted service in the Service Identification and Address Configuration sections. 7

Sample Input:-

Snapshot 1: taking the name to be used for remote service

Snapshot 2: Protocol to be used for connecting remote service

Snapshot 3: IP address of the machine providing the service and the port at which service is running

Snapshot 4: name of the service or database at remote machine Sample Output:-

10

Snapshot 5: Showing that remote service connecting successfully # tnsnames.ora Network Configuration File: ORC2 =
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.101)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orc2) ) ) ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = rvtech-1fe3e4e4)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED)

11

(SERVICE_NAME = orcl) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) )

)
2.4.2 MODULE 2(PROPAGATION OF UPDATE TRANSACTION):-

In this Module whenever client want to make updation at local database, receiver receive the update transaction from client through GUI and update the local database and using propagator, propagate the update transaction at other site. At other site receiver receive the update transaction and update the database and again propagate the update transaction to other site.

Propagator:package CLASS; import java.net.*; import java.io.*; public class propagator { public void register(customer cust,account acc) { Socket socket; try { System.out.println("inside propagator"); socket=new Socket("192.168.56.101",5001); System.out.println("connection established"); ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream()); DataOutputStream dos=new DataOutputStream(socket.getOutputStream()); dos.writeUTF("registration"); 12

oos.writeObject(cust); oos.writeObject(acc); socket.close(); System.out.println("connection closed"); } catch(Exception e) { System.out.println(e); } } } Receiver:package CLASS; import java.io.*; import java.net.*; import java.sql.*; public class receiver { public static void main(String arg[]) { try { ServerSocket server=new ServerSocket(5000); while(true) { Socket socket=server.accept(); Thread th=new receiver1(socket); th.start(); } } catch(Exception e) { System.out.println(e); } } } class receiver1 extends Thread { Socket socket; 13

receiver1(Socket sc) { socket=sc; } @Override public void run() { Connection cn=null; PreparedStatement st=null; try{ ObjectInputStream ois=new ObjectInputStream(socket.getInputStream()); DataInputStream dis=new DataInputStream(socket.getInputStream()); String str=dis.readUTF(); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn=DriverManager.getConnection("jdbc:odbc:amit","scott","tiger"); st=cn.prepareStatement("alter session set NLS_DATE_FORMAT='dd-mm-yyyy'"); st.execute(); if(str.equals("registration")) { customer cust=(customer)ois.readObject(); account acc=(account)ois.readObject(); st=cn.prepareStatement("insert into customer values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); st.setString(1,cust.cid); st.setString(2,cust.fname); st.setString(3,cust.mname); st.setString(4,cust.lname); st.setString(5,cust.dob); st.setString(6,cust.f_name); st.setString(7,cust.m_status); st.setString(8,cust.add1); st.setString(9,cust.add2); st.setString(10,cust.city); st.setString(11,cust.p_code); st.setString(12,cust.state); st.setString(13,cust.m_no); st.setString(14,cust.email); st.setString(15,cust.occupation); st.setString(16,cust.religion); st.setString(17,cust.gender); int r=st.executeUpdate(); //System.out.println("no of row"+r); //cn.commit(); if(r==1) 14

{ //System.out.println("inside account"); // System.out.println("inside account0"); st=cn.prepareStatement("insert into account(acc_no,cid,balance,open_date,i_rate,type,branch_no) values(?,?,?,?,?,?,?)"); st.setString(1,acc.acc_no); st.setString(2,acc.cid); //System.out.println("inside account1"); st.setString(3,Long.toString(acc.balance)); // System.out.println("inside account2"); st.setString(4,acc.open_date); //st.setString(5,null); st.setString(5,Float.toString(acc.i_rate)); st.setString(6,acc.type); st.setString(7,acc.branch_no); int r1=st.executeUpdate(); if(r1==1) { cn.commit(); cn.close(); } else { cn.rollback(); cn.close(); } } } } catch(Exception e) { System.out.println(e); } } }

15

Customer_servlet(receiver for registration done at local site):package servlet; //import java.io.IOException; //import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import CLASS.*; import java.sql.*; import java.io.*; import java.util.*; import javax.servlet.RequestDispatcher; public class customer_servlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); customer cust=new customer(); cust.fname=request.getParameter("fname"); cust.mname=request.getParameter("mname"); cust.lname=request.getParameter("lname"); cust.f_name=request.getParameter("f_name"); String dobday=request.getParameter("dobday"); String dobmonth=request.getParameter("dobmonth"); String dobyear=request.getParameter("dobyear"); cust.gender=request.getParameter("gender"); cust.m_status=request.getParameter("m_status"); cust.add1=request.getParameter("addr1"); cust.add2=request.getParameter("addr2"); cust.city=request.getParameter("city"); cust.p_code=request.getParameter("pin"); cust.state=request.getParameter("State"); cust.m_no=request.getParameter("phone"); cust.email=request.getParameter("email"); cust.occupation=request.getParameter("occupation"); 16

cust.religion=request.getParameter("religion"); String dob=dobday+"-"+dobmonth+"-"+dobyear; cust.dob=dob; Connection cn=null; PreparedStatement st=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn=DriverManager.getConnection("jdbc:odbc:amit","scott","tiger"); st=cn.prepareStatement("alter session set NLS_DATE_FORMAT='dd-mm-yyyy'"); st.execute(); st=cn.prepareStatement("select max(cid) from customer"); ResultSet rs=st.executeQuery(); if(rs.next()) { cust.cid=rs.getString(1); long num=Long.parseLong(cust.cid); num=num+1; cust.cid=Long.toString(num); } st=cn.prepareStatement("insert into customer values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); st.setString(1,cust.cid); st.setString(2,cust.fname); st.setString(3,cust.mname); st.setString(4,cust.lname); st.setString(5,dob); st.setString(6,cust.f_name); st.setString(7,cust.m_status); st.setString(8,cust.add1); st.setString(9,cust.add2); st.setString(10,cust.city); st.setString(11,cust.p_code); st.setString(12,cust.state); st.setString(13,cust.m_no); st.setString(14,cust.email); st.setString(15,cust.occupation); st.setString(16,cust.religion); st.setString(17,cust.gender); int r=st.executeUpdate(); //System.out.println("no of row"+r); //cn.commit(); if(r==1) { //System.out.println("inside account"); account acc=new account(); st=cn.prepareStatement("select acc_no from account where cid=(select max(cid) from account)"); 17

rs=st.executeQuery(); if(rs.next()) { acc.acc_no=rs.getString(1); Long num1=Long.parseLong(acc.acc_no); num1=num1+1; acc.acc_no=Long.toString(num1); } acc.getvalue(acc.acc_no,cust.cid,"saving"); // System.out.println("inside account0"); st=cn.prepareStatement("insert into account(acc_no,cid,balance,open_date,i_rate,type,branch_no) values(?,?,?,?,?,?,?)"); st.setString(1,acc.acc_no); st.setString(2,acc.cid); //System.out.println("inside account1"); st.setString(3,Long.toString(acc.balance)); // System.out.println("inside account2"); st.setString(4,acc.open_date); //st.setString(5,null); st.setString(5,Float.toString(acc.i_rate)); st.setString(6,acc.type); st.setString(7,acc.branch_no); int r1=st.executeUpdate(); if(r1==1) { cn.commit(); cn.close(); propagator pr=new propagator(); System.out.println("prpagator created"); pr.register(cust,acc); List data=new ArrayList(); data.add(cust.fname); data.add(cust.mname); data.add(cust.lname); data.add(acc.acc_no); data.add(acc.balance); data.add(acc.type); request.setAttribute("data",data); RequestDispatcher dispatcher =request.getRequestDispatcher("/registration_info.jsp"); if(dispatcher!=null) dispatcher.forward(request,response);

} 18

else { cn.rollback(); cn.close(); } } else { cn.rollback(); cn.close(); } response.sendRedirect("home1.jsp"); } catch(Exception e) { System.out.println(e); } finally { out.close(); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } } Sample Input:New account creation page is used information through GUI. as output to this module. Client provide the

19

Snapshot 6: Account registration form for taking input from client Sample Output:Data is successfully updated to local database and propagated to all other remote site. At remote site data is successfully updated into the database.

Snapshot 7: Displaying the info of the account after account creation 20

2.4.3 Java script code for validation:// Declaring required variables var digits = "0123456789"; // non-digit characters which are allowed in phone numbers var phoneNumberDelimiters = "()- "; // characters which are allowed in international phone numbers // (a leading + is OK) var validWorldPhoneChars = phoneNumberDelimiters + "+"; // Minimum no of digits in an international phone no. var minDigitsInIPhoneNumber = 10; var dtCh= "-"; var minYear=1900; var maxYear=2100; var whitespace=" \t\n\r"; validations = new Array(); validations[0]=["document.form1.fname","notblank"]; validations[1]=["document.form1.fname","validname"]; validations[2]=["document.form1.lname","notblank"]; validations[3]=["document.form1.lname","validname"]; validations[4]=["document.form1.mname","validname"]; validations[5]=["document.form1.f_name","notblank"]; validations[6]=["document.form1.f_name","validname"]; validations[7]=["document.form1.addr1","notblank"]; validations[8]=["document.form1.city","notblank"]; validations[9]=["document.form1.city","validname"]; validations[10]=["document.form1.pin","isNumber"]; validations[11]=["document.form1.pin","validpin"]; validations[12]=["document.form1.phone","validphone"]; validations[13]=["document.form1.email","validemail"]; validations[14]=["document.form1.religion","notblank"]; validations[15]=["document.form1.religion","validname"]; function isEmpty(s) { var i; if(( s== null ) || ( s.length == 0 )) return true; for(i=0 ; i < s.length ; i++) { var c= s.charAt(i); if(whitespace.indexOf(c)==-1) return false; } return true; } function isDigit(c) { 21

return((c>="0")&&(c<="9")); } function isinteger(field) { var i,c; var s=field.value; if(isEmpty(s)) { alert("field can't be empty"); field.focus(); return false; } for(i=0 ;i < s.length ; i++) { c=s.charAt(i); if(!isDigit(c)) { alert("field must contain only digit"); field.focus(); return false; } } return true; } function echeck(str) { var at="@" var dot="." var lat=str.indexOf(at) var lstr=str.length var ldot=str.indexOf(dot) if (str.indexOf(at)==-1){ alert("Invalid E-mail ID") return false } if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){ alert("Invalid E-mail ID") return false } if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){ alert("Invalid E-mail ID") return false } if (str.indexOf(at,(lat+1))!=-1){ 22

alert("Invalid E-mail ID") return false } if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){ alert("Invalid E-mail ID") return false } if (str.indexOf(dot,(lat+2))==-1){ alert("Invalid E-mail ID") return false } if (str.indexOf(" ")!=-1){ alert("Invalid E-mail ID") return false } return true } function isInteger(s){ var i; for (i = 0; i < s.length; i++){ // Check that current character is number. var c = s.charAt(i); if (((c < "0") || (c > "9"))) return false; } // All characters are numbers. return true; } function stripCharsInBag(s, bag){ var i; var returnString = ""; // Search through string's characters one by one. // If character is not in bag, append to returnString. for (i = 0; i < s.length; i++){ var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; }

23

function trim(s) { var i; var returnString = ""; // Search through string's characters one by one. // If character is not a whitespace, append to returnString. for (i = 0; i < s.length; i++) { // Check that current character isn't whitespace. var c = s.charAt(i); if (c != " ") returnString += c; } return returnString; } function checkInternationalPhone(strPhone){ var bracket=3 strPhone=trim(strPhone) if(strPhone.indexOf("+")>1) return false if(strPhone.indexOf("-")!=-1)bracket=bracket+1 if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false var brchr=strPhone.indexOf("(") if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false s=stripCharsInBag(strPhone,validWorldPhoneChars); return (isInteger(s) && s.length >= minDigitsInIPhoneNumber); } function special(data) { var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~_"; for (var i = 0; i < data.length; i++) { if (iChars.indexOf(data.charAt(i)) != -1) { alert ("Your string has special characters. \nThese are not allowed."); return true; } } return false; } function namecheck(s) { var i; if( !special(s) ) { for(i=0 ; i < s.length ; i++ ) 24

{ var c = s.charAt(i); if(isDigit(c)) { alert("name will not contain digit"); return false; } } return true; } else return false; } function validateForm() { var i; var checkToMake; var field; for(i=0 ; i < validations.length ; i++) { checkToMake=validations[i][1]; field=eval(validations[i][0]); switch(checkToMake) { case 'notblank': if(isEmpty(field.value)) { alert(field.name+" may not be empty"); field.focus(); return false; } break; case 'validname': if(!namecheck(field.value)) { field.value=""; field.focus(); return false; } break; case 'isNumber': if(!isinteger(field)) return false; break; 25

case 'validemail': if (echeck(field.value)==false){ field.value="" field.focus() return false } break; case 'validpin': if(field.value.length<6) { alert("invalid pin") field.focus(); return false; } break; case 'validphone': if ((field.value == null) || (field.value == "")){ alert("Please Enter your Phone Number") field.focus() return false } if (checkInternationalPhone(field.value)==false){ alert("Please Enter a Valid Phone Number") field.value="" field.focus() return false } } } return true; }

26

2.6 TESTING OF IMPLEMENTED MODULE:Test Case No Description Sample Input Expected Output Original result Comment Corrective Measure 1 Checking of creation of distributed environment Ip address of remote site is used in ping command Received packet=4 and sent packet=4 Packet sent=4 received=0 Host is not able to connect to the remote site Change the ip address of Bridge gateway

Test Case No Description Sample Input Expected Output Original result Comment Corrective Measure

2 Checking of creation of distributed environment create a table at remote site and insert some data into the table Table and data can be access from the local site Ora-12560:TNS Protocol Adopter error User is not able to login to remote database because listener is not listening on the specified port Check the listener.ora file and configure it properly And start the listener at remote site

27

Test Case No Description Sample Input Expected Output Original result Comment

3 Checking of creation of distributed environment create a table at remote site and insert some data into the table Table and data can be access from the local site Local user is accessing the remote database using the public link. Expected result is obtained. This module is working properly, 4 Only authorized user can login. Tested with some valid and in-valid username and password Only valid user can login. Expected result is obtained. This is working properly,

Test Case No Description Sample Input Expected Output Comment

Test Case No Description

5 All data is correctly received by the receiver at local site from the client through and it correctly updated in the local database. New account creation page is used for this purpose. Many account is created using this page. Data is successfully updated into the database. Data is successfully inserted into the database.

Sample Input Expected Output Original result

28

Comment Test Case No Description Sample Input Expected Output Original result Comment Corrective Measure

Expected result is obtained. Data is successfully inserted into the database. 6 Update transaction is successfully propagated to remote site using propagator module. Data received by receiver is made available to the propagator as input. Receiver is already tested. Update transaction is received by receiver at remote site. Bind error Port is already used by any other application or previous socket. Thread is used for each new connection

Test Case No Description Sample Input Expected Output Original result Comment

7 Update transaction is successfully propagated to remote site using propagator module. Data received by receiver is made available to the propagator as input. Receiver is already tested. Update transaction is received by receiver at remote site. Update transaction is successfully received by receiver at remote, which also updated the remote database. Expected result is obtained. Update transaction is successfully received by receiver at remote ,which also updated the remote database.

29

Test Case No Description

8 At the time of new account creation , data should be inserted in both account and customer table. Otherwise rollback if inserted in only one table 1)All valid data needed is provided to the receiver 2)some changes is made in code ,so that integrity constraint is violated in account table Data is inserted in both table or rollback. Data is inserted in both table or not in any table. Expected result is obtained. This module is working properly,

Sample Input Expected Output Original result Comment

2.7 DETAIL OF MODULE TO BE COMPLETED:2.7.1 MODULE IV (DATA RETRIVAL FROM REPLICA NODE)In this module first read replica set is calculated. Data is retrieved from the node which is in read replica set and they are compare to find the latest data. If that data is not present in the local database, then local database is updated and fresh data is made available to the client. This module has three sub-module:a) Classified replica determination:- In this module ROS of adjacent replica is compared to find the classified replica. b) Mandatory replica determination:- In this mandatory replica is identified, which will become the read replica. c) Minimum sub tree determination: - In this module tree is created for next iteration.

30